├── UI
├── deops.ico
├── ZedGraph.dll
├── AssemblyInfo.cs
├── Graphics
│ ├── about.psd
│ ├── arrow.psd
│ ├── away.ico
│ ├── away.psd
│ ├── blank.ico
│ ├── blank.psd
│ ├── block.ico
│ ├── block.psd
│ ├── bold.ico
│ ├── chat.ico
│ ├── color.ico
│ ├── diff.gif
│ ├── edit.gif
│ ├── ghost.psd
│ ├── group.ico
│ ├── guy.jpg
│ ├── guy.psd
│ ├── home.png
│ ├── home.psd
│ ├── inbox.png
│ ├── jobs.psd
│ ├── logo.jpg
│ ├── logo.psd
│ ├── mail.ico
│ ├── mail.png
│ ├── mail.psd
│ ├── open.gif
│ ├── phone.png
│ ├── phone.psd
│ ├── post.png
│ ├── post.psd
│ ├── rank.ico
│ ├── rank.psd
│ ├── smile.ico
│ ├── tiny.bmp
│ ├── tiny.psd
│ ├── tiny2.psd
│ ├── user.ico
│ ├── about2.jpg
│ ├── about2.psd
│ ├── archive.png
│ ├── archive.psd
│ ├── colors.png
│ ├── compose.png
│ ├── details.png
│ ├── folder.png
│ ├── fontbig.ico
│ ├── gemini5.jpg
│ ├── ghosts.png
│ ├── italic.ico
│ ├── locked.gif
│ ├── locked.png
│ ├── magnify.psd
│ ├── outbox.png
│ ├── refresh.png
│ ├── refresh.psd
│ ├── riseop.png
│ ├── riseop.psd
│ ├── storage.png
│ ├── storage.psd
│ ├── useroff.ico
│ ├── archfolder.png
│ ├── chatflash.ico
│ ├── components.psd
│ ├── fontnormal.ico
│ ├── fontsmall.ico
│ ├── geminipsd.psd
│ ├── groupoff.ico
│ ├── homeplate.psd
│ ├── leftarrow.png
│ ├── post_high.png
│ ├── post_low.png
│ ├── question.psd
│ ├── rightarrow.png
│ ├── schedule.png
│ ├── schedule.psd
│ ├── side_max.png
│ ├── side_max.psd
│ ├── side_min.png
│ ├── side_min.psd
│ ├── structure.bmp
│ ├── structure.vsd
│ ├── underlne.ico
│ ├── unlocked.gif
│ ├── unlocked.png
│ ├── userflash.ico
│ ├── job_assigned.png
│ ├── mail_attach.png
│ ├── mail_attach.psd
│ ├── refresh copy.png
│ ├── setup_banner.psd
│ ├── storage
│ │ ├── Diff.gif
│ │ ├── Edit.gif
│ │ ├── Temp.png
│ │ ├── Accept.gif
│ │ ├── Close.gif
│ │ ├── Extend1.gif
│ │ ├── Extend2.gif
│ │ ├── Folder.png
│ │ ├── Ghost.png
│ │ ├── Higher.png
│ │ ├── InLower.png
│ │ ├── Locked.gif
│ │ ├── Lower.png
│ │ ├── Thumbs.db
│ │ ├── reject.gif
│ │ ├── replace.gif
│ │ ├── Download.gif
│ │ ├── InHigher.png
│ │ ├── OpenFile.gif
│ │ ├── Unlocked.gif
│ │ ├── download.psd
│ │ ├── GhostFolder.png
│ │ ├── DownloadCancel.gif
│ │ └── DownloadSmall.png
│ ├── job_dispatched.png
│ ├── shell diagram.psd
│ └── storage icons.psd
├── Interface
│ ├── user.ico
│ ├── popout.png
│ ├── Res
│ │ ├── comm.png
│ │ ├── data.png
│ │ ├── help.png
│ │ ├── home.png
│ │ ├── news.png
│ │ ├── palm.jpg
│ │ ├── plans.png
│ │ ├── reg.gif
│ │ ├── reg.png
│ │ ├── save.png
│ │ ├── star.png
│ │ ├── tools.png
│ │ ├── tree.jpg
│ │ ├── views.png
│ │ ├── compass.psd
│ │ ├── discard.png
│ │ ├── keyhole.png
│ │ ├── manage.png
│ │ ├── network.png
│ │ ├── project.png
│ │ ├── riseop.ico
│ │ ├── riseop.png
│ │ ├── search.png
│ │ ├── splash.jpg
│ │ ├── splash.png
│ │ ├── splash.psd
│ │ ├── warning.png
│ │ ├── help_side.png
│ │ ├── news_hot.png
│ │ ├── operation.png
│ │ ├── projects.psd
│ │ ├── save_down.png
│ │ ├── save_hot.png
│ │ ├── save_norm.png
│ │ ├── settings.png
│ │ ├── discard_down.png
│ │ ├── discard_hot.png
│ │ ├── discard_norm.png
│ │ ├── project add.png
│ │ ├── riseop logo.psd
│ │ ├── shinybuttons.psd
│ │ ├── side_search.png
│ │ ├── icons
│ │ │ ├── riseop16.ico
│ │ │ ├── riseop32.ico
│ │ │ ├── riseop48.ico
│ │ │ └── riseop64.ico
│ │ └── project remove.png
│ ├── bugemini5.jpg
│ ├── link_denied.ico
│ ├── Views
│ │ ├── Res
│ │ │ ├── bold.ico
│ │ │ ├── copy.png
│ │ │ ├── cut.png
│ │ │ ├── font.png
│ │ │ ├── colors.png
│ │ │ ├── italic.ico
│ │ │ ├── normal.png
│ │ │ ├── paste.png
│ │ │ ├── fontbig.ico
│ │ │ ├── fontsmall.ico
│ │ │ ├── projects.psd
│ │ │ ├── richtext.png
│ │ │ ├── timestamp.png
│ │ │ ├── underlne.ico
│ │ │ └── fontnormal.ico
│ │ ├── TreeListViewEx
│ │ │ ├── StringTools.cs
│ │ │ ├── IParentChildList.cs
│ │ │ ├── TreeListView.resx
│ │ │ └── ContainerListView.resx
│ │ ├── ContextMenuStripEx.cs
│ │ ├── ViewShell.cs
│ │ ├── ViewShell.Designer.cs
│ │ ├── CustomIconForm.cs
│ │ ├── ExternalView.Designer.cs
│ │ ├── GetTextDialog.cs
│ │ ├── ImageButton.cs
│ │ └── ExternalView.cs
│ ├── link_confirmed.ico
│ ├── link_pending.ico
│ ├── Setup
│ │ ├── JoinOp.cs
│ │ ├── NewProjectForm.cs
│ │ ├── IdentityForm.cs
│ │ ├── CreateOp.cs
│ │ └── InviteForm.cs
│ ├── Settings
│ │ ├── MyAddress.cs
│ │ ├── UpnpLog.cs
│ │ ├── User.cs
│ │ ├── CacheSetup.cs
│ │ └── IgnoreForm.cs
│ └── Info
│ │ └── NetworkPanel.Designer.cs
├── NLipsum.Core.dll
├── Include
│ └── ZedGraph.dll
├── Update
│ ├── updateop.ico
│ ├── Properties
│ │ ├── Settings.settings
│ │ ├── Settings.Designer.cs
│ │ ├── AssemblyInfo.cs
│ │ ├── app.manifest
│ │ └── Resources.Designer.cs
│ ├── Program.cs
│ └── UpdateOp.sln
├── Services
│ ├── IM
│ │ ├── Res
│ │ │ ├── im.ico
│ │ │ ├── greenled.png
│ │ │ ├── redled.png
│ │ │ └── yellowled.png
│ │ └── IMUI.cs
│ ├── Plan
│ │ ├── Res
│ │ │ ├── pen.png
│ │ │ ├── goals.ico
│ │ │ ├── reject.gif
│ │ │ ├── star.png
│ │ │ ├── target.png
│ │ │ ├── archive.png
│ │ │ ├── details.png
│ │ │ ├── details1.png
│ │ │ ├── details2.png
│ │ │ ├── highlow.pdn
│ │ │ ├── low_goal.png
│ │ │ ├── schedule.ico
│ │ │ └── high_goal.png
│ │ ├── Plan.txt
│ │ ├── Goals
│ │ │ ├── ProgressText.Designer.cs
│ │ │ └── ProgressText.cs
│ │ ├── Schedule
│ │ │ ├── BlockRow.Designer.cs
│ │ │ └── DateSlider.Designer.cs
│ │ └── PlanUI.cs
│ ├── Board
│ │ ├── Res
│ │ │ ├── board.ico
│ │ │ ├── lower.png
│ │ │ ├── post.png
│ │ │ ├── compose.ico
│ │ │ ├── compose.png
│ │ │ ├── higher.png
│ │ │ ├── postit.psd
│ │ │ ├── high_scope.png
│ │ │ └── low_scope.png
│ │ └── BoardUI.cs
│ ├── Buddy
│ │ ├── res
│ │ │ ├── away.png
│ │ │ ├── buddy.png
│ │ │ ├── buddy.psd
│ │ │ ├── group.png
│ │ │ ├── blocked.png
│ │ │ ├── smilely.psd
│ │ │ ├── buddy_add.png
│ │ │ ├── buddy_who.png
│ │ │ ├── group_add.png
│ │ │ ├── buddy_remove.png
│ │ │ └── group_remove.png
│ │ └── BuddyUI.cs
│ ├── Chat
│ │ ├── Res
│ │ │ ├── chat.ico
│ │ │ ├── chat.png
│ │ │ ├── invite.png
│ │ │ ├── pacman.png
│ │ │ └── rooms.png
│ │ ├── CreateRoom.cs
│ │ ├── Chat.txt
│ │ ├── ChatUI.cs
│ │ └── InviteForm.cs
│ ├── Mail
│ │ └── Res
│ │ │ ├── delete.gif
│ │ │ ├── inbox.png
│ │ │ ├── mail.ico
│ │ │ ├── mail.png
│ │ │ ├── mail.psd
│ │ │ ├── outbox.png
│ │ │ ├── compose.ico
│ │ │ ├── compose.png
│ │ │ ├── recvmail.png
│ │ │ ├── sendmail.ico
│ │ │ ├── sentmail.png
│ │ │ └── mail_attach.png
│ ├── Share
│ │ ├── Res
│ │ │ ├── icon.png
│ │ │ ├── share.ico
│ │ │ ├── share.png
│ │ │ ├── refresh.png
│ │ │ ├── download.png
│ │ │ └── sendfile.png
│ │ ├── ShareUI.cs
│ │ ├── AcceptFileForm.cs
│ │ ├── ShareInfoPanel.cs
│ │ └── ShareInfoPanel.Designer.cs
│ ├── Storage
│ │ ├── Res
│ │ │ ├── add.gif
│ │ │ ├── add.png
│ │ │ ├── diff.ico
│ │ │ ├── details.png
│ │ │ └── storage.ico
│ │ ├── Forms
│ │ │ ├── EditNotes.cs
│ │ │ ├── UnlockForm.cs
│ │ │ └── HashStatus.cs
│ │ ├── StorageUI.cs
│ │ └── InfoPanel.Designer.cs
│ ├── Trust
│ │ ├── Res
│ │ │ ├── link.ico
│ │ │ ├── linkup.png
│ │ │ ├── unlink.ico
│ │ │ ├── unlink.png
│ │ │ └── confirmlink.ico
│ │ ├── RemoveLinks.cs
│ │ ├── Link.txt
│ │ ├── LinkChooser.cs
│ │ └── EditLink.cs
│ ├── Voice
│ │ ├── Res
│ │ │ ├── Voice.psd
│ │ │ ├── VoiceMute.png
│ │ │ ├── VoiceOff.png
│ │ │ ├── VoicePTT.png
│ │ │ ├── VoiceVAD.png
│ │ │ └── VoiceSettings.png
│ │ └── VoiceSettings.cs
│ ├── Profile
│ │ ├── Res
│ │ │ ├── profile.ico
│ │ │ └── DefaultPhoto.jpg
│ │ ├── Profile.txt
│ │ ├── PreviewTemplate.cs
│ │ ├── EditTemplate.cs
│ │ ├── ProfileUI.cs
│ │ └── PreviewTemplate.Designer.cs
│ ├── Update
│ │ └── UpdateForm.cs
│ ├── Location
│ │ ├── StatusForm.cs
│ │ └── Location.txt
│ └── Transfer
│ │ └── BitfieldControl.Designer.cs
├── bin
│ └── Debug
│ │ ├── libspeex.dll
│ │ └── Sim
│ │ └── names_ops.txt
├── Simulator
│ ├── LegendForm.cs
│ ├── TrackFile.cs
│ └── SelectServices.cs
├── AppSettings.cs
└── app.config
├── Console
├── bin
│ └── Debug
│ │ ├── start.sh
│ │ └── init.txt
├── app.config
├── readme.txt
├── Console.csproj
└── Properties
│ └── AssemblyInfo.cs
├── Core
├── Include
│ ├── libspeex.dll
│ └── NLipsum.Core.dll
├── Core.csproj
├── Utilities
│ ├── LipsumGenerator.cs
│ └── WorkerQueue.cs
├── Implementation
│ ├── Design.txt
│ └── Protocol
│ │ └── G2Header.cs
├── Services
│ └── Location
│ │ └── LookupService.cs
└── Properties
│ └── AssemblyInfo.cs
├── Android
├── DroidOps
│ ├── Resources
│ │ ├── drawable
│ │ │ └── Icon.png
│ │ ├── values
│ │ │ └── Strings.xml
│ │ ├── layout
│ │ │ └── Main.axml
│ │ ├── AboutResources.txt
│ │ └── Resource.designer.cs
│ ├── Assets
│ │ └── AboutAssets.txt
│ └── Properties
│ │ └── AssemblyInfo.cs
└── Android.sln
├── .gitignore
├── readme.md
└── license.txt
/UI/deops.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/deops.ico
--------------------------------------------------------------------------------
/UI/ZedGraph.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/ZedGraph.dll
--------------------------------------------------------------------------------
/UI/AssemblyInfo.cs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/AssemblyInfo.cs
--------------------------------------------------------------------------------
/Console/bin/Debug/start.sh:
--------------------------------------------------------------------------------
1 | daemonize -c /home/swax/deops /usr/bin/mono DeOpsConsole.exe
--------------------------------------------------------------------------------
/UI/Graphics/about.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/about.psd
--------------------------------------------------------------------------------
/UI/Graphics/arrow.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/arrow.psd
--------------------------------------------------------------------------------
/UI/Graphics/away.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/away.ico
--------------------------------------------------------------------------------
/UI/Graphics/away.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/away.psd
--------------------------------------------------------------------------------
/UI/Graphics/blank.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/blank.ico
--------------------------------------------------------------------------------
/UI/Graphics/blank.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/blank.psd
--------------------------------------------------------------------------------
/UI/Graphics/block.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/block.ico
--------------------------------------------------------------------------------
/UI/Graphics/block.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/block.psd
--------------------------------------------------------------------------------
/UI/Graphics/bold.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/bold.ico
--------------------------------------------------------------------------------
/UI/Graphics/chat.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/chat.ico
--------------------------------------------------------------------------------
/UI/Graphics/color.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/color.ico
--------------------------------------------------------------------------------
/UI/Graphics/diff.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/diff.gif
--------------------------------------------------------------------------------
/UI/Graphics/edit.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/edit.gif
--------------------------------------------------------------------------------
/UI/Graphics/ghost.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/ghost.psd
--------------------------------------------------------------------------------
/UI/Graphics/group.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/group.ico
--------------------------------------------------------------------------------
/UI/Graphics/guy.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/guy.jpg
--------------------------------------------------------------------------------
/UI/Graphics/guy.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/guy.psd
--------------------------------------------------------------------------------
/UI/Graphics/home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/home.png
--------------------------------------------------------------------------------
/UI/Graphics/home.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/home.psd
--------------------------------------------------------------------------------
/UI/Graphics/inbox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/inbox.png
--------------------------------------------------------------------------------
/UI/Graphics/jobs.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/jobs.psd
--------------------------------------------------------------------------------
/UI/Graphics/logo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/logo.jpg
--------------------------------------------------------------------------------
/UI/Graphics/logo.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/logo.psd
--------------------------------------------------------------------------------
/UI/Graphics/mail.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/mail.ico
--------------------------------------------------------------------------------
/UI/Graphics/mail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/mail.png
--------------------------------------------------------------------------------
/UI/Graphics/mail.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/mail.psd
--------------------------------------------------------------------------------
/UI/Graphics/open.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/open.gif
--------------------------------------------------------------------------------
/UI/Graphics/phone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/phone.png
--------------------------------------------------------------------------------
/UI/Graphics/phone.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/phone.psd
--------------------------------------------------------------------------------
/UI/Graphics/post.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/post.png
--------------------------------------------------------------------------------
/UI/Graphics/post.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/post.psd
--------------------------------------------------------------------------------
/UI/Graphics/rank.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/rank.ico
--------------------------------------------------------------------------------
/UI/Graphics/rank.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/rank.psd
--------------------------------------------------------------------------------
/UI/Graphics/smile.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/smile.ico
--------------------------------------------------------------------------------
/UI/Graphics/tiny.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/tiny.bmp
--------------------------------------------------------------------------------
/UI/Graphics/tiny.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/tiny.psd
--------------------------------------------------------------------------------
/UI/Graphics/tiny2.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/tiny2.psd
--------------------------------------------------------------------------------
/UI/Graphics/user.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/user.ico
--------------------------------------------------------------------------------
/UI/Interface/user.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/user.ico
--------------------------------------------------------------------------------
/UI/NLipsum.Core.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/NLipsum.Core.dll
--------------------------------------------------------------------------------
/UI/Graphics/about2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/about2.jpg
--------------------------------------------------------------------------------
/UI/Graphics/about2.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/about2.psd
--------------------------------------------------------------------------------
/UI/Graphics/archive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/archive.png
--------------------------------------------------------------------------------
/UI/Graphics/archive.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/archive.psd
--------------------------------------------------------------------------------
/UI/Graphics/colors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/colors.png
--------------------------------------------------------------------------------
/UI/Graphics/compose.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/compose.png
--------------------------------------------------------------------------------
/UI/Graphics/details.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/details.png
--------------------------------------------------------------------------------
/UI/Graphics/folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/folder.png
--------------------------------------------------------------------------------
/UI/Graphics/fontbig.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/fontbig.ico
--------------------------------------------------------------------------------
/UI/Graphics/gemini5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/gemini5.jpg
--------------------------------------------------------------------------------
/UI/Graphics/ghosts.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/ghosts.png
--------------------------------------------------------------------------------
/UI/Graphics/italic.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/italic.ico
--------------------------------------------------------------------------------
/UI/Graphics/locked.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/locked.gif
--------------------------------------------------------------------------------
/UI/Graphics/locked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/locked.png
--------------------------------------------------------------------------------
/UI/Graphics/magnify.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/magnify.psd
--------------------------------------------------------------------------------
/UI/Graphics/outbox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/outbox.png
--------------------------------------------------------------------------------
/UI/Graphics/refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/refresh.png
--------------------------------------------------------------------------------
/UI/Graphics/refresh.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/refresh.psd
--------------------------------------------------------------------------------
/UI/Graphics/riseop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/riseop.png
--------------------------------------------------------------------------------
/UI/Graphics/riseop.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/riseop.psd
--------------------------------------------------------------------------------
/UI/Graphics/storage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage.png
--------------------------------------------------------------------------------
/UI/Graphics/storage.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage.psd
--------------------------------------------------------------------------------
/UI/Graphics/useroff.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/useroff.ico
--------------------------------------------------------------------------------
/UI/Include/ZedGraph.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Include/ZedGraph.dll
--------------------------------------------------------------------------------
/UI/Interface/popout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/popout.png
--------------------------------------------------------------------------------
/UI/Update/updateop.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Update/updateop.ico
--------------------------------------------------------------------------------
/Core/Include/libspeex.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/Core/Include/libspeex.dll
--------------------------------------------------------------------------------
/UI/Graphics/archfolder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/archfolder.png
--------------------------------------------------------------------------------
/UI/Graphics/chatflash.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/chatflash.ico
--------------------------------------------------------------------------------
/UI/Graphics/components.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/components.psd
--------------------------------------------------------------------------------
/UI/Graphics/fontnormal.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/fontnormal.ico
--------------------------------------------------------------------------------
/UI/Graphics/fontsmall.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/fontsmall.ico
--------------------------------------------------------------------------------
/UI/Graphics/geminipsd.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/geminipsd.psd
--------------------------------------------------------------------------------
/UI/Graphics/groupoff.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/groupoff.ico
--------------------------------------------------------------------------------
/UI/Graphics/homeplate.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/homeplate.psd
--------------------------------------------------------------------------------
/UI/Graphics/leftarrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/leftarrow.png
--------------------------------------------------------------------------------
/UI/Graphics/post_high.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/post_high.png
--------------------------------------------------------------------------------
/UI/Graphics/post_low.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/post_low.png
--------------------------------------------------------------------------------
/UI/Graphics/question.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/question.psd
--------------------------------------------------------------------------------
/UI/Graphics/rightarrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/rightarrow.png
--------------------------------------------------------------------------------
/UI/Graphics/schedule.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/schedule.png
--------------------------------------------------------------------------------
/UI/Graphics/schedule.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/schedule.psd
--------------------------------------------------------------------------------
/UI/Graphics/side_max.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/side_max.png
--------------------------------------------------------------------------------
/UI/Graphics/side_max.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/side_max.psd
--------------------------------------------------------------------------------
/UI/Graphics/side_min.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/side_min.png
--------------------------------------------------------------------------------
/UI/Graphics/side_min.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/side_min.psd
--------------------------------------------------------------------------------
/UI/Graphics/structure.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/structure.bmp
--------------------------------------------------------------------------------
/UI/Graphics/structure.vsd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/structure.vsd
--------------------------------------------------------------------------------
/UI/Graphics/underlne.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/underlne.ico
--------------------------------------------------------------------------------
/UI/Graphics/unlocked.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/unlocked.gif
--------------------------------------------------------------------------------
/UI/Graphics/unlocked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/unlocked.png
--------------------------------------------------------------------------------
/UI/Graphics/userflash.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/userflash.ico
--------------------------------------------------------------------------------
/UI/Interface/Res/comm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/comm.png
--------------------------------------------------------------------------------
/UI/Interface/Res/data.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/data.png
--------------------------------------------------------------------------------
/UI/Interface/Res/help.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/help.png
--------------------------------------------------------------------------------
/UI/Interface/Res/home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/home.png
--------------------------------------------------------------------------------
/UI/Interface/Res/news.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/news.png
--------------------------------------------------------------------------------
/UI/Interface/Res/palm.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/palm.jpg
--------------------------------------------------------------------------------
/UI/Interface/Res/plans.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/plans.png
--------------------------------------------------------------------------------
/UI/Interface/Res/reg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/reg.gif
--------------------------------------------------------------------------------
/UI/Interface/Res/reg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/reg.png
--------------------------------------------------------------------------------
/UI/Interface/Res/save.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/save.png
--------------------------------------------------------------------------------
/UI/Interface/Res/star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/star.png
--------------------------------------------------------------------------------
/UI/Interface/Res/tools.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/tools.png
--------------------------------------------------------------------------------
/UI/Interface/Res/tree.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/tree.jpg
--------------------------------------------------------------------------------
/UI/Interface/Res/views.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/views.png
--------------------------------------------------------------------------------
/UI/Interface/bugemini5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/bugemini5.jpg
--------------------------------------------------------------------------------
/UI/Services/IM/Res/im.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/IM/Res/im.ico
--------------------------------------------------------------------------------
/UI/bin/Debug/libspeex.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/bin/Debug/libspeex.dll
--------------------------------------------------------------------------------
/UI/Graphics/job_assigned.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/job_assigned.png
--------------------------------------------------------------------------------
/UI/Graphics/mail_attach.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/mail_attach.png
--------------------------------------------------------------------------------
/UI/Graphics/mail_attach.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/mail_attach.psd
--------------------------------------------------------------------------------
/UI/Graphics/refresh copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/refresh copy.png
--------------------------------------------------------------------------------
/UI/Graphics/setup_banner.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/setup_banner.psd
--------------------------------------------------------------------------------
/UI/Graphics/storage/Diff.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/Diff.gif
--------------------------------------------------------------------------------
/UI/Graphics/storage/Edit.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/Edit.gif
--------------------------------------------------------------------------------
/UI/Graphics/storage/Temp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/Temp.png
--------------------------------------------------------------------------------
/UI/Interface/Res/compass.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/compass.psd
--------------------------------------------------------------------------------
/UI/Interface/Res/discard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/discard.png
--------------------------------------------------------------------------------
/UI/Interface/Res/keyhole.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/keyhole.png
--------------------------------------------------------------------------------
/UI/Interface/Res/manage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/manage.png
--------------------------------------------------------------------------------
/UI/Interface/Res/network.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/network.png
--------------------------------------------------------------------------------
/UI/Interface/Res/project.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/project.png
--------------------------------------------------------------------------------
/UI/Interface/Res/riseop.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/riseop.ico
--------------------------------------------------------------------------------
/UI/Interface/Res/riseop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/riseop.png
--------------------------------------------------------------------------------
/UI/Interface/Res/search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/search.png
--------------------------------------------------------------------------------
/UI/Interface/Res/splash.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/splash.jpg
--------------------------------------------------------------------------------
/UI/Interface/Res/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/splash.png
--------------------------------------------------------------------------------
/UI/Interface/Res/splash.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/splash.psd
--------------------------------------------------------------------------------
/UI/Interface/Res/warning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/warning.png
--------------------------------------------------------------------------------
/UI/Interface/link_denied.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/link_denied.ico
--------------------------------------------------------------------------------
/UI/Services/Plan/Res/pen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Plan/Res/pen.png
--------------------------------------------------------------------------------
/Core/Include/NLipsum.Core.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/Core/Include/NLipsum.Core.dll
--------------------------------------------------------------------------------
/UI/Graphics/job_dispatched.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/job_dispatched.png
--------------------------------------------------------------------------------
/UI/Graphics/shell diagram.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/shell diagram.psd
--------------------------------------------------------------------------------
/UI/Graphics/storage icons.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage icons.psd
--------------------------------------------------------------------------------
/UI/Graphics/storage/Accept.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/Accept.gif
--------------------------------------------------------------------------------
/UI/Graphics/storage/Close.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/Close.gif
--------------------------------------------------------------------------------
/UI/Graphics/storage/Extend1.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/Extend1.gif
--------------------------------------------------------------------------------
/UI/Graphics/storage/Extend2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/Extend2.gif
--------------------------------------------------------------------------------
/UI/Graphics/storage/Folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/Folder.png
--------------------------------------------------------------------------------
/UI/Graphics/storage/Ghost.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/Ghost.png
--------------------------------------------------------------------------------
/UI/Graphics/storage/Higher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/Higher.png
--------------------------------------------------------------------------------
/UI/Graphics/storage/InLower.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/InLower.png
--------------------------------------------------------------------------------
/UI/Graphics/storage/Locked.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/Locked.gif
--------------------------------------------------------------------------------
/UI/Graphics/storage/Lower.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/Lower.png
--------------------------------------------------------------------------------
/UI/Graphics/storage/Thumbs.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/Thumbs.db
--------------------------------------------------------------------------------
/UI/Graphics/storage/reject.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/reject.gif
--------------------------------------------------------------------------------
/UI/Graphics/storage/replace.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/replace.gif
--------------------------------------------------------------------------------
/UI/Interface/Res/help_side.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/help_side.png
--------------------------------------------------------------------------------
/UI/Interface/Res/news_hot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/news_hot.png
--------------------------------------------------------------------------------
/UI/Interface/Res/operation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/operation.png
--------------------------------------------------------------------------------
/UI/Interface/Res/projects.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/projects.psd
--------------------------------------------------------------------------------
/UI/Interface/Res/save_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/save_down.png
--------------------------------------------------------------------------------
/UI/Interface/Res/save_hot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/save_hot.png
--------------------------------------------------------------------------------
/UI/Interface/Res/save_norm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/save_norm.png
--------------------------------------------------------------------------------
/UI/Interface/Res/settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/settings.png
--------------------------------------------------------------------------------
/UI/Interface/Views/Res/bold.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Views/Res/bold.ico
--------------------------------------------------------------------------------
/UI/Interface/Views/Res/copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Views/Res/copy.png
--------------------------------------------------------------------------------
/UI/Interface/Views/Res/cut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Views/Res/cut.png
--------------------------------------------------------------------------------
/UI/Interface/Views/Res/font.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Views/Res/font.png
--------------------------------------------------------------------------------
/UI/Interface/link_confirmed.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/link_confirmed.ico
--------------------------------------------------------------------------------
/UI/Interface/link_pending.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/link_pending.ico
--------------------------------------------------------------------------------
/UI/Services/Board/Res/board.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Board/Res/board.ico
--------------------------------------------------------------------------------
/UI/Services/Board/Res/lower.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Board/Res/lower.png
--------------------------------------------------------------------------------
/UI/Services/Board/Res/post.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Board/Res/post.png
--------------------------------------------------------------------------------
/UI/Services/Buddy/res/away.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Buddy/res/away.png
--------------------------------------------------------------------------------
/UI/Services/Buddy/res/buddy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Buddy/res/buddy.png
--------------------------------------------------------------------------------
/UI/Services/Buddy/res/buddy.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Buddy/res/buddy.psd
--------------------------------------------------------------------------------
/UI/Services/Buddy/res/group.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Buddy/res/group.png
--------------------------------------------------------------------------------
/UI/Services/Chat/Res/chat.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Chat/Res/chat.ico
--------------------------------------------------------------------------------
/UI/Services/Chat/Res/chat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Chat/Res/chat.png
--------------------------------------------------------------------------------
/UI/Services/Chat/Res/invite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Chat/Res/invite.png
--------------------------------------------------------------------------------
/UI/Services/Chat/Res/pacman.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Chat/Res/pacman.png
--------------------------------------------------------------------------------
/UI/Services/Chat/Res/rooms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Chat/Res/rooms.png
--------------------------------------------------------------------------------
/UI/Services/IM/Res/greenled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/IM/Res/greenled.png
--------------------------------------------------------------------------------
/UI/Services/IM/Res/redled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/IM/Res/redled.png
--------------------------------------------------------------------------------
/UI/Services/Mail/Res/delete.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Mail/Res/delete.gif
--------------------------------------------------------------------------------
/UI/Services/Mail/Res/inbox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Mail/Res/inbox.png
--------------------------------------------------------------------------------
/UI/Services/Mail/Res/mail.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Mail/Res/mail.ico
--------------------------------------------------------------------------------
/UI/Services/Mail/Res/mail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Mail/Res/mail.png
--------------------------------------------------------------------------------
/UI/Services/Mail/Res/mail.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Mail/Res/mail.psd
--------------------------------------------------------------------------------
/UI/Services/Mail/Res/outbox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Mail/Res/outbox.png
--------------------------------------------------------------------------------
/UI/Services/Plan/Res/goals.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Plan/Res/goals.ico
--------------------------------------------------------------------------------
/UI/Services/Plan/Res/reject.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Plan/Res/reject.gif
--------------------------------------------------------------------------------
/UI/Services/Plan/Res/star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Plan/Res/star.png
--------------------------------------------------------------------------------
/UI/Services/Plan/Res/target.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Plan/Res/target.png
--------------------------------------------------------------------------------
/UI/Services/Share/Res/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Share/Res/icon.png
--------------------------------------------------------------------------------
/UI/Services/Share/Res/share.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Share/Res/share.ico
--------------------------------------------------------------------------------
/UI/Services/Share/Res/share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Share/Res/share.png
--------------------------------------------------------------------------------
/UI/Services/Storage/Res/add.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Storage/Res/add.gif
--------------------------------------------------------------------------------
/UI/Services/Storage/Res/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Storage/Res/add.png
--------------------------------------------------------------------------------
/UI/Services/Trust/Res/link.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Trust/Res/link.ico
--------------------------------------------------------------------------------
/UI/Services/Voice/Res/Voice.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Voice/Res/Voice.psd
--------------------------------------------------------------------------------
/UI/Graphics/storage/Download.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/Download.gif
--------------------------------------------------------------------------------
/UI/Graphics/storage/InHigher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/InHigher.png
--------------------------------------------------------------------------------
/UI/Graphics/storage/OpenFile.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/OpenFile.gif
--------------------------------------------------------------------------------
/UI/Graphics/storage/Unlocked.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/Unlocked.gif
--------------------------------------------------------------------------------
/UI/Graphics/storage/download.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/download.psd
--------------------------------------------------------------------------------
/UI/Interface/Res/discard_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/discard_down.png
--------------------------------------------------------------------------------
/UI/Interface/Res/discard_hot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/discard_hot.png
--------------------------------------------------------------------------------
/UI/Interface/Res/discard_norm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/discard_norm.png
--------------------------------------------------------------------------------
/UI/Interface/Res/project add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/project add.png
--------------------------------------------------------------------------------
/UI/Interface/Res/riseop logo.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/riseop logo.psd
--------------------------------------------------------------------------------
/UI/Interface/Res/shinybuttons.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/shinybuttons.psd
--------------------------------------------------------------------------------
/UI/Interface/Res/side_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/side_search.png
--------------------------------------------------------------------------------
/UI/Interface/Views/Res/colors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Views/Res/colors.png
--------------------------------------------------------------------------------
/UI/Interface/Views/Res/italic.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Views/Res/italic.ico
--------------------------------------------------------------------------------
/UI/Interface/Views/Res/normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Views/Res/normal.png
--------------------------------------------------------------------------------
/UI/Interface/Views/Res/paste.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Views/Res/paste.png
--------------------------------------------------------------------------------
/UI/Services/Board/Res/compose.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Board/Res/compose.ico
--------------------------------------------------------------------------------
/UI/Services/Board/Res/compose.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Board/Res/compose.png
--------------------------------------------------------------------------------
/UI/Services/Board/Res/higher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Board/Res/higher.png
--------------------------------------------------------------------------------
/UI/Services/Board/Res/postit.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Board/Res/postit.psd
--------------------------------------------------------------------------------
/UI/Services/Buddy/res/blocked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Buddy/res/blocked.png
--------------------------------------------------------------------------------
/UI/Services/Buddy/res/smilely.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Buddy/res/smilely.psd
--------------------------------------------------------------------------------
/UI/Services/IM/Res/yellowled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/IM/Res/yellowled.png
--------------------------------------------------------------------------------
/UI/Services/Mail/Res/compose.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Mail/Res/compose.ico
--------------------------------------------------------------------------------
/UI/Services/Mail/Res/compose.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Mail/Res/compose.png
--------------------------------------------------------------------------------
/UI/Services/Mail/Res/recvmail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Mail/Res/recvmail.png
--------------------------------------------------------------------------------
/UI/Services/Mail/Res/sendmail.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Mail/Res/sendmail.ico
--------------------------------------------------------------------------------
/UI/Services/Mail/Res/sentmail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Mail/Res/sentmail.png
--------------------------------------------------------------------------------
/UI/Services/Plan/Res/archive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Plan/Res/archive.png
--------------------------------------------------------------------------------
/UI/Services/Plan/Res/details.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Plan/Res/details.png
--------------------------------------------------------------------------------
/UI/Services/Plan/Res/details1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Plan/Res/details1.png
--------------------------------------------------------------------------------
/UI/Services/Plan/Res/details2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Plan/Res/details2.png
--------------------------------------------------------------------------------
/UI/Services/Plan/Res/highlow.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Plan/Res/highlow.pdn
--------------------------------------------------------------------------------
/UI/Services/Plan/Res/low_goal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Plan/Res/low_goal.png
--------------------------------------------------------------------------------
/UI/Services/Plan/Res/schedule.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Plan/Res/schedule.ico
--------------------------------------------------------------------------------
/UI/Services/Share/Res/refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Share/Res/refresh.png
--------------------------------------------------------------------------------
/UI/Services/Storage/Res/diff.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Storage/Res/diff.ico
--------------------------------------------------------------------------------
/UI/Services/Trust/Res/linkup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Trust/Res/linkup.png
--------------------------------------------------------------------------------
/UI/Services/Trust/Res/unlink.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Trust/Res/unlink.ico
--------------------------------------------------------------------------------
/UI/Services/Trust/Res/unlink.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Trust/Res/unlink.png
--------------------------------------------------------------------------------
/UI/Graphics/storage/GhostFolder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/GhostFolder.png
--------------------------------------------------------------------------------
/UI/Interface/Res/icons/riseop16.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/icons/riseop16.ico
--------------------------------------------------------------------------------
/UI/Interface/Res/icons/riseop32.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/icons/riseop32.ico
--------------------------------------------------------------------------------
/UI/Interface/Res/icons/riseop48.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/icons/riseop48.ico
--------------------------------------------------------------------------------
/UI/Interface/Res/icons/riseop64.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/icons/riseop64.ico
--------------------------------------------------------------------------------
/UI/Interface/Res/project remove.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Res/project remove.png
--------------------------------------------------------------------------------
/UI/Interface/Views/Res/fontbig.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Views/Res/fontbig.ico
--------------------------------------------------------------------------------
/UI/Interface/Views/Res/fontsmall.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Views/Res/fontsmall.ico
--------------------------------------------------------------------------------
/UI/Interface/Views/Res/projects.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Views/Res/projects.psd
--------------------------------------------------------------------------------
/UI/Interface/Views/Res/richtext.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Views/Res/richtext.png
--------------------------------------------------------------------------------
/UI/Interface/Views/Res/timestamp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Views/Res/timestamp.png
--------------------------------------------------------------------------------
/UI/Interface/Views/Res/underlne.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Views/Res/underlne.ico
--------------------------------------------------------------------------------
/UI/Services/Board/Res/high_scope.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Board/Res/high_scope.png
--------------------------------------------------------------------------------
/UI/Services/Board/Res/low_scope.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Board/Res/low_scope.png
--------------------------------------------------------------------------------
/UI/Services/Buddy/res/buddy_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Buddy/res/buddy_add.png
--------------------------------------------------------------------------------
/UI/Services/Buddy/res/buddy_who.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Buddy/res/buddy_who.png
--------------------------------------------------------------------------------
/UI/Services/Buddy/res/group_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Buddy/res/group_add.png
--------------------------------------------------------------------------------
/UI/Services/Mail/Res/mail_attach.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Mail/Res/mail_attach.png
--------------------------------------------------------------------------------
/UI/Services/Plan/Res/high_goal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Plan/Res/high_goal.png
--------------------------------------------------------------------------------
/UI/Services/Profile/Res/profile.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Profile/Res/profile.ico
--------------------------------------------------------------------------------
/UI/Services/Share/Res/download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Share/Res/download.png
--------------------------------------------------------------------------------
/UI/Services/Share/Res/sendfile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Share/Res/sendfile.png
--------------------------------------------------------------------------------
/UI/Services/Storage/Res/details.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Storage/Res/details.png
--------------------------------------------------------------------------------
/UI/Services/Storage/Res/storage.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Storage/Res/storage.ico
--------------------------------------------------------------------------------
/UI/Services/Voice/Res/VoiceMute.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Voice/Res/VoiceMute.png
--------------------------------------------------------------------------------
/UI/Services/Voice/Res/VoiceOff.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Voice/Res/VoiceOff.png
--------------------------------------------------------------------------------
/UI/Services/Voice/Res/VoicePTT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Voice/Res/VoicePTT.png
--------------------------------------------------------------------------------
/UI/Services/Voice/Res/VoiceVAD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Voice/Res/VoiceVAD.png
--------------------------------------------------------------------------------
/UI/Graphics/storage/DownloadCancel.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/DownloadCancel.gif
--------------------------------------------------------------------------------
/UI/Graphics/storage/DownloadSmall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Graphics/storage/DownloadSmall.png
--------------------------------------------------------------------------------
/UI/Interface/Views/Res/fontnormal.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Views/Res/fontnormal.ico
--------------------------------------------------------------------------------
/UI/Services/Buddy/res/buddy_remove.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Buddy/res/buddy_remove.png
--------------------------------------------------------------------------------
/UI/Services/Buddy/res/group_remove.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Buddy/res/group_remove.png
--------------------------------------------------------------------------------
/UI/Services/Trust/Res/confirmlink.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Trust/Res/confirmlink.ico
--------------------------------------------------------------------------------
/UI/Services/Profile/Res/DefaultPhoto.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Profile/Res/DefaultPhoto.jpg
--------------------------------------------------------------------------------
/UI/Services/Voice/Res/VoiceSettings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Services/Voice/Res/VoiceSettings.png
--------------------------------------------------------------------------------
/Android/DroidOps/Resources/drawable/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/Android/DroidOps/Resources/drawable/Icon.png
--------------------------------------------------------------------------------
/UI/Interface/Views/TreeListViewEx/StringTools.cs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/swax/DeOps/HEAD/UI/Interface/Views/TreeListViewEx/StringTools.cs
--------------------------------------------------------------------------------
/Console/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Console/bin/Debug/init.txt:
--------------------------------------------------------------------------------
1 | # use script to setup a lookup server
2 | # be careful using it as a server for your own network because password here is in plain text'
3 |
4 | load 1 seed
5 | sleep 3
6 | ident
7 | status
--------------------------------------------------------------------------------
/Console/readme.txt:
--------------------------------------------------------------------------------
1 | to run on a linux box:
2 |
3 | zip up build, put on server
4 | sudo apt-get install mono-complete
5 | sudo apt-get install daemonize
6 | sudo apt-get isntall unzip
7 | unzip deops
8 | sudo sh start.sh
--------------------------------------------------------------------------------
/Android/DroidOps/Resources/values/Strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Hello World, Click Me!
4 | DroidOps
5 |
6 |
--------------------------------------------------------------------------------
/UI/bin/Debug/Sim/names_ops.txt:
--------------------------------------------------------------------------------
1 | Firesoft
2 | Boracle
3 | Pluggle
4 | RedDelicious
5 | iCompany
6 | Microserfs
7 | Watersoft
8 | Airsoft
9 | Earthsoft
10 | CorbanDallasInc
11 | Zorg
12 | Brawdo
13 | 8Chan
14 | SomethingAwesome
15 | B0rd3rz
--------------------------------------------------------------------------------
/UI/Services/Profile/Profile.txt:
--------------------------------------------------------------------------------
1 |
2 | Profile Packet Files
3 | template
4 | fields
5 | file=(file name)
6 |
7 | template
8 |
9 |
10 |
11 |
12 |
13 | fields
14 | name=jim
15 | picture=jim.jpg -> sources to file
16 |
17 |
18 |
--------------------------------------------------------------------------------
/UI/Update/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /Android/Core/bin
2 | /Android/Core/obj
3 | /Android/DroidOps/obj
4 | /Android/DroidOps/bin
5 | /Console/obj
6 | /Console/bin
7 | /Core/obj
8 | /Core/bin
9 | /UI/obj
10 |
11 | /Android/Android.suo
12 | /Android/Android.userprefs
13 | /DeOps.suo
14 |
15 | !/Console/bin/Debug/init.txt
16 | !/Console/bin/Debug/start.sh
17 | .vs/
18 | UI/bin/
19 | *.user
20 |
--------------------------------------------------------------------------------
/UI/Interface/Views/ContextMenuStripEx.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 | using System.Windows.Forms;
5 |
6 |
7 | namespace DeOps.Interface.Views
8 | {
9 | public class ContextMenuStripEx : ContextMenuStrip
10 | {
11 | public ContextMenuStripEx()
12 | {
13 | GuiUtils.SetupToolstrip(this, new OpusColorTable());
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/UI/Simulator/LegendForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Text;
7 | using System.Windows.Forms;
8 |
9 | using DeOps.Interface;
10 |
11 | namespace DeOps.Simulator
12 | {
13 | public partial class LegendForm : CustomIconForm
14 | {
15 | public LegendForm()
16 | {
17 | InitializeComponent();
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/Android/DroidOps/Assets/AboutAssets.txt:
--------------------------------------------------------------------------------
1 | Any raw assets you want to be deployed with your application can be placed in
2 | this directory (and child directories) and given a Build Action of "AndroidAsset".
3 |
4 | These files will be deployed with you package and will be accessible using Android's
5 | AssetManager, like this:
6 |
7 | public class ReadAsset : Activity
8 | {
9 | protected override void OnCreate (Bundle bundle)
10 | {
11 | base.OnCreate (bundle);
12 |
13 | InputStream input = Assets.Open ("my_asset.txt");
14 | }
15 | }
16 |
17 | Additionally, some Android functions will automatically load asset files:
18 |
19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
--------------------------------------------------------------------------------
/UI/Services/Chat/CreateRoom.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Text;
7 | using System.Windows.Forms;
8 |
9 | namespace DeOps.Services.Chat
10 | {
11 | public partial class CreateRoom : DeOps.Interface.CustomIconForm
12 | {
13 | public CreateRoom()
14 | {
15 | InitializeComponent();
16 | }
17 |
18 | private void ExitButton_Click(object sender, EventArgs e)
19 | {
20 | Close();
21 | }
22 |
23 | private void OkButton_Click(object sender, EventArgs e)
24 | {
25 | DialogResult = DialogResult.OK;
26 | Close();
27 | }
28 | }
29 | }
--------------------------------------------------------------------------------
/UI/Update/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Windows.Forms;
4 |
5 | namespace UpdateOp
6 | {
7 | static class Program
8 | {
9 | ///
10 | /// The main entry point for the application.
11 | ///
12 | [STAThread]
13 | static void Main(string[] args)
14 | {
15 | #if DEBUG
16 | args = new string[1];
17 | args[0] = "RiseOp_1.0.1.exe";
18 | #endif
19 |
20 | if (args.Length != 1)
21 | return;
22 |
23 | Application.EnableVisualStyles();
24 | Application.SetCompatibleTextRenderingDefault(false);
25 | Application.Run(new MainForm(args[0]));
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/UI/Services/Storage/Forms/EditNotes.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Text;
7 | using System.Windows.Forms;
8 |
9 | namespace DeOps.Services.Storage
10 | {
11 | public partial class EditNotes : DeOps.Interface.CustomIconForm
12 | {
13 | public EditNotes()
14 | {
15 | InitializeComponent();
16 | }
17 |
18 | private void EditNotes_Load(object sender, EventArgs e)
19 | {
20 |
21 | }
22 |
23 | private void OKButton_Click(object sender, EventArgs e)
24 | {
25 |
26 | DialogResult = DialogResult.OK;
27 | }
28 |
29 | private void ExitButton_Click(object sender, EventArgs e)
30 | {
31 | Close();
32 | }
33 | }
34 | }
--------------------------------------------------------------------------------
/Core/Core.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Library
4 | DeOpsCore
5 | DeOpsCore
6 |
7 |
8 | net6.0
9 | false
10 |
11 |
12 |
13 |
14 | all
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/UI/Interface/Setup/JoinOp.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Text;
7 | using System.Windows.Forms;
8 |
9 | namespace DeOps.Interface.Startup
10 | {
11 | public partial class JoinOp : CustomIconForm
12 | {
13 | public string OpLink = "";
14 | public AccessType OpAccess = AccessType.Public;
15 |
16 | public JoinOp()
17 | {
18 | InitializeComponent();
19 | }
20 |
21 | private void ButtonOK_Click(object sender, EventArgs e)
22 | {
23 | OpLink = LinkBox.Text;
24 |
25 | DialogResult = DialogResult.OK;
26 | Close();
27 | }
28 |
29 | private void ButtonCancel_Click(object sender, EventArgs e)
30 | {
31 | Close();
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/Console/Console.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | net6.0
4 | Exe
5 | DeOpsConsole
6 | DeOpsConsole
7 | false
8 |
9 |
10 | DeOpsConsole.Program
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | all
22 |
23 |
24 |
--------------------------------------------------------------------------------
/UI/Interface/Views/ViewShell.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Drawing;
5 | using System.Data;
6 | using System.Text;
7 | using System.Windows.Forms;
8 |
9 | namespace DeOps.Interface
10 | {
11 | public partial class ViewShell : UserControl
12 | {
13 | public ExternalView External;
14 |
15 | public bool BlockReinit;
16 |
17 | public ViewShell()
18 | {
19 | InitializeComponent();
20 | }
21 |
22 | public virtual void Init() {}
23 |
24 | public virtual bool Fin() { return true; }
25 |
26 | public virtual string GetTitle(bool small) { return ""; }
27 |
28 | public virtual Size GetDefaultSize()
29 | {
30 | return new Size(100, 100);
31 | }
32 |
33 | public virtual Icon GetIcon()
34 | {
35 | return null;
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/Core/Utilities/LipsumGenerator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace DeOpsCore.Utilities
8 | {
9 | public class LipsumGenerator
10 | {
11 | internal string[] GenerateParagraphs(int num)
12 | {
13 | return Enumerable.Range(0, num)
14 | .Select(i => "this should be a random paragraph")
15 | .ToArray();
16 | }
17 |
18 | internal string[] GenerateSentences(int num)
19 | {
20 | return Enumerable.Range(0, num)
21 | .Select(i => "this should be a random string")
22 | .ToArray();
23 | }
24 |
25 | internal string[] GenerateWords(int num)
26 | {
27 | return Enumerable.Range(0, num)
28 | .Select(i => "randomword?")
29 | .ToArray();
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/UI/Update/UpdateOp.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 10.00
3 | # Visual Studio 2008
4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UpdateOp", "UpdateOp.csproj", "{A20E0959-1DB9-493E-AE2D-4E37AC0670D1}"
5 | EndProject
6 | Global
7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
8 | Debug|Any CPU = Debug|Any CPU
9 | Release|Any CPU = Release|Any CPU
10 | EndGlobalSection
11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
12 | {A20E0959-1DB9-493E-AE2D-4E37AC0670D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
13 | {A20E0959-1DB9-493E-AE2D-4E37AC0670D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
14 | {A20E0959-1DB9-493E-AE2D-4E37AC0670D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
15 | {A20E0959-1DB9-493E-AE2D-4E37AC0670D1}.Release|Any CPU.Build.0 = Release|Any CPU
16 | EndGlobalSection
17 | GlobalSection(SolutionProperties) = preSolution
18 | HideSolutionNode = FALSE
19 | EndGlobalSection
20 | EndGlobal
21 |
--------------------------------------------------------------------------------
/UI/Services/Profile/PreviewTemplate.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Text;
7 | using System.Windows.Forms;
8 |
9 | using DeOps.Implementation;
10 |
11 |
12 | namespace DeOps.Services.Profile
13 | {
14 | public partial class PreviewTemplate : DeOps.Interface.CustomIconForm
15 | {
16 | ProfileService Profiles;
17 | EditProfile EditForm;
18 | string Html;
19 |
20 | public PreviewTemplate(string html, EditProfile edit)
21 | {
22 | InitializeComponent();
23 |
24 | Profiles = edit.Profiles;
25 | EditForm = edit;
26 | Html = html;
27 | }
28 |
29 | private void PreviewTemplate_Load(object sender, EventArgs e)
30 | {
31 | Browser.DocumentText = ProfileView.FleshTemplate(Profiles, Profiles.Core.UserID, 0, Html, EditForm.TextFields, EditForm.FileFields);
32 | }
33 | }
34 | }
--------------------------------------------------------------------------------
/UI/Services/Update/UpdateForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 |
10 | using DeOps.Interface;
11 |
12 |
13 | namespace DeOps.Services.Update
14 | {
15 | public partial class UpdateForm : CustomIconForm
16 | {
17 | public UpdateForm(UpdateInfo info)
18 | {
19 | InitializeComponent();
20 |
21 | MessageLabel.Text = "DeOps needs to be restarted to finish updating to version " + info.DottedVersion;
22 |
23 | NotesBox.Text = info.Notes;
24 | }
25 |
26 | private void UpdateButton_Click(object sender, EventArgs e)
27 | {
28 | DialogResult = DialogResult.OK;
29 | Close();
30 | }
31 |
32 | private void LaterButton_Click(object sender, EventArgs e)
33 | {
34 | Close();
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/UI/Interface/Setup/NewProjectForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Text;
7 | using System.Windows.Forms;
8 |
9 | using DeOps.Implementation;
10 |
11 |
12 | namespace DeOps.Interface
13 | {
14 | public partial class NewProjectForm : CustomIconForm
15 | {
16 | OpCore Core;
17 |
18 | public uint ProjectID;
19 |
20 |
21 | public NewProjectForm(OpCore core)
22 | : base(core)
23 | {
24 | InitializeComponent();
25 |
26 | Core = core;
27 | }
28 |
29 | private void ButtonOK_Click(object sender, EventArgs e)
30 | {
31 | ProjectID = Core.Trust.CreateProject(NameBox.Text);
32 |
33 | DialogResult = DialogResult.OK;
34 | Close();
35 | }
36 |
37 | private void ButtonCancel_Click(object sender, EventArgs e)
38 | {
39 | Close();
40 | }
41 | }
42 | }
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 |
2 | ## DeOps - Decentralized Operations
3 |
4 | An experiment in creating a person to person hierarchy of trust, over which services like file systems, communication, and planning can be overlaid. The network is decentralized and users are identified and communicated with though public key encryption.
5 |
6 | The hierarchy is built bottom-up by users that consist of the organization. Each user decides which single user they trust, and from that one decision the hierarchy is built. Ideally this results in a more flexible organization where leaders rise and fall by the trust they earn.
7 |
8 | The network is decentralized and built to scale. A one million person hierarchy of trust could be six levels deep if one person was trusted by ten others, who each were trusted by ten others and so on, 10^6.
9 |
10 | With no dependence on DNS, DeOps is a good solution for creating coordination systems on the fly where there is no or little internet access available. DeOps facilitates coordination, for instance multiple NGOs coming together in a disaster area and setting up an organizational structure.
11 |
--------------------------------------------------------------------------------
/Android/DroidOps/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using Android.App;
4 |
5 | // Information about this assembly is defined by the following attributes.
6 | // Change them to the values specific to your project.
7 |
8 | [assembly: AssemblyTitle("DroidOps")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("")]
13 | [assembly: AssemblyCopyright("John")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
18 | // The form "{Major}.{Minor}.*" will automatically update the build and revision,
19 | // and "{Major}.{Minor}.{Build}.*" will update just the revision.
20 |
21 | [assembly: AssemblyVersion("1.0.0")]
22 |
23 | // The following attributes are used to specify the signing key for the assembly,
24 | // if desired. See the Mono documentation for more information about signing.
25 |
26 | //[assembly: AssemblyDelaySign(false)]
27 | //[assembly: AssemblyKeyFile("")]
28 |
29 |
--------------------------------------------------------------------------------
/UI/Interface/Setup/IdentityForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 |
10 | using DeOps.Implementation;
11 |
12 |
13 | namespace DeOps.Interface.Setup
14 | {
15 | public partial class IdentityForm : CustomIconForm
16 | {
17 | public IdentityForm(OpCore core, ulong user)
18 | {
19 | InitializeComponent();
20 |
21 | string name = core.GetName(user);
22 |
23 | HeaderLabel.Text = HeaderLabel.Text.Replace("", name);
24 |
25 | HelpLabel.Text = HelpLabel.Text.Replace("", name);
26 |
27 | LinkBox.Text = core.GetIdentity(user);
28 | }
29 |
30 | private void CopyLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
31 | {
32 | Clipboard.SetText(LinkBox.Text);
33 | CopyLink.Text = "Copied";
34 | }
35 |
36 | private void OKButton_Click(object sender, EventArgs e)
37 | {
38 | Close();
39 | }
40 |
41 |
42 |
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/Core/Implementation/Design.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 | when client starts dont start republishing cached data on the network until we are established to
4 | prevent spamming the network with files that are already cached. we wait until we have found our place
5 | in the network and keep track of data that is absent. once established we can publish that missing data
6 | for link, mail, plan, profile, board, etc objects
7 |
8 | once establish wait 10 seconds for local nodes to send us patch files so that we can make sure objects
9 | in local area are marked so we dont republish them
10 |
11 | when search for self complete
12 | set established in network class
13 |
14 | per object
15 | load
16 | fix current republishing strat / focus tags etc..
17 | mark data as unique
18 |
19 | if establishing
20 | cache - dont send publishes
21 | dont replicate
22 | on patch
23 | unmark unique objects
24 | put missing objects in temp objects list, max 500, remove farthest
25 | dont download
26 |
27 | on establish event
28 | set dhtbounds on all objects
29 | publish unique data in bounds
30 | download temp objects in bounds
31 |
32 | timer
33 | prune downloadlaters
34 |
35 |
--------------------------------------------------------------------------------
/UI/Update/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:2.0.50727.1433
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace UpdateOp.Properties
12 | {
13 |
14 |
15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
18 | {
19 |
20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
21 |
22 | public static Settings Default
23 | {
24 | get
25 | {
26 | return defaultInstance;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/UI/Interface/Views/TreeListViewEx/IParentChildList.cs:
--------------------------------------------------------------------------------
1 | // Author: Bill Seddon
2 | // Company: Lyquidity Solutions Limited
3 | //
4 | // This work builds on code posted to SourceForge by
5 | // Jon Rista (jrista@hotmail.com)
6 | //
7 | // This code is provided "as is" and no warranty about
8 | // it fitness for any specific task is expressed or
9 | // implied. If you choose to use this code, you do so
10 | // at your own risk.
11 | //
12 | ////////////////////////////////////////////////////////
13 |
14 | using System;
15 |
16 | namespace DeOps.Interface.TLVex
17 | {
18 | ///
19 | /// IParentChildList provides functions to navigate a mutliply-linked
20 | /// list organized in parent-child format. The current node may navigate
21 | /// upwards to its parent node, forward and backwards in the current
22 | /// level, and down to the next level of its children.
23 | ///
24 | public interface IParentChildList
25 | {
26 | IParentChildList ParentNode();
27 |
28 | IParentChildList PreviousSibling();
29 | IParentChildList NextSibling();
30 |
31 | IParentChildList FirstChild();
32 | IParentChildList NextChild();
33 | IParentChildList PreviousChild();
34 | IParentChildList LastChild();
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Android/DroidOps/Resources/layout/Main.axml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
11 |
16 |
21 |
26 |
31 |
--------------------------------------------------------------------------------
/UI/Interface/Views/ViewShell.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace DeOps.Interface
2 | {
3 | partial class ViewShell
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Component Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | components = new System.ComponentModel.Container();
32 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
33 | }
34 |
35 | #endregion
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/UI/Services/Plan/Plan.txt:
--------------------------------------------------------------------------------
1 |
2 | mark unconfirmed
3 |
4 |
5 | ---------------------
6 |
7 | bottom line not painted over
8 | themed scroll bar (scrollbar renderer?)
9 | tree lines sometimes arent painted correctly
10 | scroll/zoom should have end buttons with mouse over states
11 | plus minus button uses 7 increment
12 |
13 | ---------
14 |
15 | outlook change to schedule - currently outlook system not enforcing sense of community, but individualism
16 | items should guide subordinates, other programs can handle personal schedule
17 |
18 | cant not show unconfirmed because local may be linked to an unconfirmed
19 |
20 |
21 |
22 | --- notes ---
23 |
24 | jobs are used because the word conveys a more long term and permanent meaning
25 |
26 | people can take an assigned job and break it up into tasks based on how 'they' want it done
27 | this serves to prevent micromanagement as different people achive the same goals in different ways
28 |
29 | why not my personal schedule?
30 | there are programs for that, outlook, etc.. the schedule in de-ops gives focus to all subordinates
31 | of what the current mission is
32 |
33 | unconfirmed access to plan?
34 | if a whole branch becomes sub to a node but is not confirmed it could be 'leeching'
35 | need to foster confirmation into hierarchy before plan is devulged
--------------------------------------------------------------------------------
/UI/AppSettings.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Xml.Serialization;
6 | using System.IO;
7 |
8 | namespace DeOps
9 | {
10 | [Serializable]
11 | public class AppSettings
12 | {
13 | public bool NeedUpgrade;
14 | public string LastOpened;
15 | public string LastSimPath;
16 | public bool MonoHelp;
17 |
18 | [NonSerialized]
19 | public string SettingsPath;
20 |
21 |
22 | public static AppSettings Load(string path)
23 | {
24 | AppSettings result = null;
25 | try
26 | {
27 | var serializer = new XmlSerializer(typeof(AppSettings));
28 |
29 | using (var reader = new StreamReader(path))
30 | result = (AppSettings)serializer.Deserialize(reader);
31 | }
32 | catch
33 | {
34 | result = new AppSettings();
35 | }
36 |
37 | result.SettingsPath = path;
38 | return result;
39 | }
40 |
41 | public void Save()
42 | {
43 | var serializer = new XmlSerializer(typeof(AppSettings));
44 |
45 | using (var writer = new StreamWriter(SettingsPath))
46 | serializer.Serialize(writer, this);
47 | }
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/license.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2012, John Marshall
2 | All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without
5 | modification, are permitted provided that the following conditions are
6 | met:
7 |
8 | 1. Redistributions of source code must retain the above copyright
9 | notice, this list of conditions and the following disclaimer.
10 |
11 | 2. Redistributions in binary form must reproduce the above copyright
12 | notice, this list of conditions and the following disclaimer in the
13 | documentation and/or other materials provided with the distribution.
14 |
15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
16 | IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17 | TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
18 | PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19 | HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
21 | TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
24 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
27 |
--------------------------------------------------------------------------------
/UI/Services/Location/StatusForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 |
10 | using DeOps.Implementation;
11 | using DeOps.Interface;
12 |
13 |
14 | namespace DeOps.Services.Location
15 | {
16 | public partial class StatusForm : CustomIconForm
17 | {
18 | OpCore Core;
19 |
20 |
21 | public StatusForm(OpCore core)
22 | {
23 | InitializeComponent();
24 |
25 | Core = core;
26 |
27 | if (core.User.Settings.Invisible)
28 | InvisibleRadio.Checked = true;
29 |
30 | else if (core.Locations.LocalAway)
31 | {
32 | AwayRadio.Checked = true;
33 | AwayBox.Text = core.User.Settings.AwayMessage;
34 | }
35 |
36 | else
37 | AvailableRadio.Checked = true;
38 | }
39 |
40 | private void OkButton_Click(object sender, EventArgs e)
41 | {
42 | Core.Locations.SetInvisble(InvisibleRadio.Checked);
43 |
44 | Core.Locations.SetAway(AwayRadio.Checked, AwayBox.Text);
45 |
46 | Close();
47 | }
48 |
49 | private void CancelButton_Click(object sender, EventArgs e)
50 | {
51 | Close();
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/Core/Services/Location/LookupService.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Diagnostics;
4 | using System.Text;
5 |
6 | using DeOps.Implementation;
7 | using DeOps.Implementation.Dht;
8 | using DeOps.Implementation.Protocol;
9 | using DeOps.Implementation.Protocol.Net;
10 | using DeOps.Implementation.Transport;
11 |
12 | using DeOps.Services.Assist;
13 |
14 |
15 | namespace DeOps.Services.Location
16 | {
17 | public class LookupService : OpService
18 | {
19 | public string Name { get { return "Lookup"; } }
20 | public uint ServiceID { get { return (uint)ServiceIDs.Lookup; } }
21 |
22 | OpCore Core;
23 | DhtNetwork Network;
24 |
25 | public TempCache LookupCache;
26 | const uint DataTypeCache= 0x01;
27 |
28 |
29 |
30 | public LookupService(OpCore core)
31 | {
32 | Core = core;
33 | Network = core.Network;
34 |
35 |
36 | LookupCache = new TempCache(Network, ServiceID, DataTypeCache);
37 |
38 | // specify time out
39 | // specify how many results to send back
40 | // send back newest results?
41 | // put ttl
42 | }
43 |
44 | public void Dispose()
45 | {
46 |
47 | }
48 |
49 | public void SimTest()
50 | {
51 | }
52 |
53 | public void SimCleanup()
54 | {
55 | }
56 |
57 |
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/UI/Interface/Settings/MyAddress.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 |
10 | using DeOps.Implementation;
11 |
12 |
13 | namespace DeOps.Interface.Settings
14 | {
15 | public partial class MyAddress : CustomIconForm
16 | {
17 | OpCore Core;
18 |
19 | public MyAddress(OpCore core)
20 | : base(core)
21 | {
22 | InitializeComponent();
23 |
24 | Core = core;
25 |
26 | OrgLabel.Text = Core.User.Settings.Operation;
27 |
28 | OrgAddressBox.Text = Core.GetMyAddress();
29 |
30 | if (Core.Context.Lookup != null)
31 | LookupAddressBox.Text = Core.Context.Lookup.GetMyAddress();
32 | else
33 | LookupAddressBox.Text = "Not used";
34 | }
35 |
36 | private void CloseButton_Click(object sender, EventArgs e)
37 | {
38 | Close();
39 | }
40 |
41 | private void CopyOrgLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
42 | {
43 | Clipboard.SetText(OrgAddressBox.Text);
44 | }
45 |
46 | private void CopyLookupLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
47 | {
48 | Clipboard.SetText(LookupAddressBox.Text);
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/UI/Interface/Views/CustomIconForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Drawing;
4 | using System.Text;
5 | using System.Windows.Forms;
6 |
7 | using DeOps.Implementation;
8 |
9 |
10 | namespace DeOps.Interface
11 | {
12 | public class CustomIconForm : Form
13 | {
14 | OpUser Profile;
15 |
16 |
17 | public CustomIconForm()
18 | {
19 | Icon = InterfaceRes.deops;
20 |
21 | if (Application.RenderWithVisualStyles && !GuiUtils.IsRunningOnMono())
22 | BackColor = System.Drawing.Color.WhiteSmoke;
23 | }
24 |
25 | public CustomIconForm(OpCore core)
26 | {
27 | Profile = core.User;
28 |
29 |
30 | // window icon
31 | Profile_IconUpdate();
32 |
33 |
34 | // dialog background color
35 | if (Application.RenderWithVisualStyles && !GuiUtils.IsRunningOnMono())
36 | BackColor = System.Drawing.Color.WhiteSmoke;
37 |
38 |
39 | // signup for icon updates
40 | core.User.GuiIconUpdate += Profile_IconUpdate;
41 | }
42 |
43 | void Profile_IconUpdate()
44 | {
45 | Icon = Profile.GetOpIcon();
46 | }
47 |
48 | protected override void Dispose(bool disposing)
49 | {
50 | if(Profile != null)
51 | Profile.GuiIconUpdate -= Profile_IconUpdate;
52 |
53 | base.Dispose(disposing);
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/Core/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("DeOpsCore")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("DeOpsCore")]
13 | [assembly: AssemblyCopyright("Copyright © 2011")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("c107b2ac-616d-4ead-a650-10d55a613af6")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/UI/Update/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("UpdateOp")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("JMG")]
12 | [assembly: AssemblyProduct("UpdateOp")]
13 | [assembly: AssemblyCopyright("Copyright © 2008")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("9e26b105-ed75-4653-906e-8323b08c89df")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Console/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("DeOpsConsole")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("DeOpsConsole")]
13 | [assembly: AssemblyCopyright("Copyright © 2011")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("79df7fcd-e79a-4fa3-867b-7c5b6fc2610f")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/UI/Update/Properties/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/UI/Services/Board/BoardUI.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 |
6 | using DeOps.Interface;
7 |
8 |
9 | namespace DeOps.Services.Board
10 | {
11 | public class BoardUI : IServiceUI
12 | {
13 | CoreUI UI;
14 | BoardService Board;
15 |
16 |
17 | public BoardUI(CoreUI ui, OpService board)
18 | {
19 | UI = ui;
20 | Board = board as BoardService;
21 | }
22 |
23 | public void GetMenuInfo(InterfaceMenuType menuType, List menus, ulong user, uint project)
24 | {
25 | if (menuType == InterfaceMenuType.Quick)
26 | return;
27 |
28 | if (menuType == InterfaceMenuType.Internal)
29 | menus.Add(new MenuItemInfo("Comm/Board", BoardRes.Icon, Menu_View));
30 |
31 | if (menuType == InterfaceMenuType.External)
32 | menus.Add(new MenuItemInfo("Board", BoardRes.Icon, Menu_View));
33 | }
34 |
35 | void Menu_View(object sender, EventArgs args)
36 | {
37 | IViewParams node = sender as IViewParams;
38 |
39 | if (node == null)
40 | return;
41 |
42 | var view = new BoardView(UI, Board, node.GetUser(), node.GetProject());
43 |
44 | UI.ShowView(view, node.IsExternal());
45 | }
46 |
47 | public void GetNewsAction(ref System.Drawing.Icon symbol, ref EventHandler onClick)
48 | {
49 | symbol = BoardRes.Icon;
50 | onClick = Menu_View;
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/Android/Android.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 11.00
3 | # Visual Studio 2010
4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DroidOps", "DroidOps\DroidOps.csproj", "{B5952534-9175-460C-A228-D1A9CEBECFB9}"
5 | EndProject
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core", "Core\Core.csproj", "{632CB290-4368-4171-A576-D39FC1FD8286}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {B5952534-9175-460C-A228-D1A9CEBECFB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {B5952534-9175-460C-A228-D1A9CEBECFB9}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {B5952534-9175-460C-A228-D1A9CEBECFB9}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
17 | {B5952534-9175-460C-A228-D1A9CEBECFB9}.Release|Any CPU.ActiveCfg = Release|Any CPU
18 | {B5952534-9175-460C-A228-D1A9CEBECFB9}.Release|Any CPU.Build.0 = Release|Any CPU
19 | {632CB290-4368-4171-A576-D39FC1FD8286}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
20 | {632CB290-4368-4171-A576-D39FC1FD8286}.Debug|Any CPU.Build.0 = Debug|Any CPU
21 | {632CB290-4368-4171-A576-D39FC1FD8286}.Release|Any CPU.ActiveCfg = Release|Any CPU
22 | {632CB290-4368-4171-A576-D39FC1FD8286}.Release|Any CPU.Build.0 = Release|Any CPU
23 | EndGlobalSection
24 | GlobalSection(SolutionProperties) = preSolution
25 | HideSolutionNode = FALSE
26 | EndGlobalSection
27 | GlobalSection(MonoDevelopProperties) = preSolution
28 | StartupItem = DroidOps\DroidOps.csproj
29 | EndGlobalSection
30 | EndGlobal
31 |
--------------------------------------------------------------------------------
/UI/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | True
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | 0
21 |
22 |
23 | 0
24 |
25 |
26 | 0
27 |
28 |
29 | True
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/UI/Services/Trust/RemoveLinks.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Text;
7 | using System.Windows.Forms;
8 |
9 | using DeOps.Interface;
10 | using DeOps.Implementation;
11 |
12 | namespace DeOps.Services.Trust
13 | {
14 | public partial class RemoveLinks : CustomIconForm
15 | {
16 | List PersonIDs;
17 |
18 | public List RemoveIDs = new List();
19 |
20 | public RemoveLinks(OpCore core, List ids)
21 | : base(core)
22 | {
23 | InitializeComponent();
24 |
25 | PersonIDs = ids;
26 |
27 | foreach (ulong id in PersonIDs)
28 | PeopleList.Items.Add(new RemoveItem(id, core.GetName(id)));
29 | }
30 |
31 | private void TheCancelButton_Click(object sender, EventArgs e)
32 | {
33 | Close();
34 | }
35 |
36 | private void RemoveButton_Click(object sender, EventArgs e)
37 | {
38 | foreach (RemoveItem item in PeopleList.SelectedItems)
39 | RemoveIDs.Add(item.ID);
40 |
41 | DialogResult = DialogResult.OK;
42 |
43 | Close();
44 | }
45 | }
46 |
47 | public class RemoveItem
48 | {
49 | public ulong ID;
50 | public string Name;
51 |
52 | public RemoveItem(ulong id, string name)
53 | {
54 | ID = id;
55 | Name = name;
56 | }
57 |
58 | public override string ToString()
59 | {
60 |
61 | return Name;
62 | }
63 | }
64 | }
--------------------------------------------------------------------------------
/Core/Implementation/Protocol/G2Header.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Net;
3 | using System.Net.Sockets;
4 |
5 | using DeOps.Implementation.Dht;
6 | using DeOps.Implementation.Protocol.Net;
7 | using DeOps.Implementation.Transport;
8 |
9 |
10 | namespace DeOps.Implementation.Protocol
11 | {
12 | public class RootPacket
13 | {
14 | public const byte Network = 0x10;
15 | public const byte Comm = 0x20;
16 | public const byte Padding = 0x30;
17 | public const byte Tunnel = 0x40;
18 | }
19 |
20 | public class G2ReceivedPacket
21 | {
22 | public G2Header Root;
23 | public DhtAddress Source;
24 | public TcpConnect Tcp;
25 |
26 | public bool Tunneled { get { return Source.TunnelClient != null; } }
27 | public bool ReceivedTcp { get { return Tcp != null; } }
28 | public bool ReceivedUdp { get { return Tcp == null; } }
29 | }
30 |
31 | public enum DirectionType {In, Out};
32 |
33 | public class PacketLogEntry
34 | {
35 | public DateTime Time;
36 | public TransportProtocol Protocol;
37 | public DirectionType Direction;
38 | public DhtAddress Address;
39 | public byte[] Data;
40 |
41 | public PacketLogEntry(DateTime time, TransportProtocol protocol, DirectionType direction, DhtAddress address, byte[] data)
42 | {
43 | Time = time;
44 | Protocol = protocol;
45 | Direction = direction;
46 | Address = address;
47 | Data = data;
48 | }
49 |
50 | public override string ToString()
51 | {
52 | return Address.ToString() + " " + Protocol.ToString() + " " + Direction.ToString();
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/UI/Services/Profile/EditTemplate.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Text;
7 | using System.Windows.Forms;
8 |
9 | namespace DeOps.Services.Profile
10 | {
11 | public partial class EditTemplate : DeOps.Interface.CustomIconForm
12 | {
13 | EditProfile EditForm;
14 | ProfileTemplate Template;
15 |
16 | public EditTemplate(ProfileTemplate template, EditProfile form)
17 | {
18 | InitializeComponent();
19 |
20 | EditForm = form;
21 | Template = template;
22 | }
23 |
24 | private void EditTemplate_Load(object sender, EventArgs e)
25 | {
26 | HtmlBox.Text = Template.Html;
27 | }
28 |
29 | private void LinkPreview_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
30 | {
31 | PreviewTemplate preview = new PreviewTemplate(HtmlBox.Text, EditForm);
32 | preview.ShowDialog(this);
33 | }
34 |
35 | private void ButtonOK_Click(object sender, EventArgs e)
36 | {
37 | Template.Html = HtmlBox.Text;
38 |
39 | if(!EditForm.TemplateCombo.Items.Contains(Template))
40 | EditForm.TemplateCombo.Items.Insert(0, Template);
41 |
42 | EditForm.TemplateCombo.SelectedItem = Template;
43 | EditForm.TemplateCombo_SelectedIndexChanged(null, null);
44 |
45 | Close();
46 | }
47 |
48 | private void ButtonCancel_Click(object sender, EventArgs e)
49 | {
50 | Close();
51 | }
52 |
53 |
54 | }
55 | }
--------------------------------------------------------------------------------
/UI/Services/Transfer/BitfieldControl.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace DeOps.Services.Transfer
2 | {
3 | partial class BitfieldControl
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Component Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.SuspendLayout();
32 | //
33 | // BitfieldControl
34 | //
35 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
36 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
37 | this.Name = "BitfieldControl";
38 | this.Paint += new System.Windows.Forms.PaintEventHandler(this.BitfieldControl_Paint);
39 | this.Resize += new System.EventHandler(this.BitfieldControl_Resize);
40 | this.ResumeLayout(false);
41 |
42 | }
43 |
44 | #endregion
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/UI/Services/Chat/Chat.txt:
--------------------------------------------------------------------------------
1 |
2 | put untrusted room on back burner
3 | room would be always desynched, endless support questions
4 | would only allow nearest 16 xor/high/low nodes
5 | generates many location queries on startup of potential untrusted nodes
6 | special handles needed for those who wish to chat with untrusted who are not
7 | untrusted can create public rooms anyways
8 | uses a lot of bw/memory for udp connections for a flurry of unreliability
9 |
10 |
11 | invoke needs to be changed to begin invoke
12 |
13 | profile/link change (node) (subscribe)
14 | if node is self (possible room change)
15 | if have confirmed uplink
16 | ensure top room exists, CreateRoom
17 | remove members
18 | re-add members
19 | if locs exist for unconnected members, connect
20 | refresh room
21 | else remove top room if exists, CloseRoom
22 |
23 | if confirmed downlinks
24 | ensure bottom room exists, CreateRoom
25 | remove members
26 | re-add members
27 | if locs exist for unconnected members, connect
28 | refresh room
29 | else remove bottom room, CloseRoom
30 |
31 | else someone else
32 | search all rooms for node, remove
33 | UpdateRoom remove
34 | find where node belongs
35 | UpdateRoom add
36 |
37 |
38 | new loc
39 | if not connected to node, connect
40 |
41 | socket update
42 | if connected/disconnected UpdateRoom refresh
43 |
44 | interface init
45 | foreach room
46 | CreateRoom
47 |
48 | events
49 | CreateRoom(view)
50 | if no tab for id, create
51 | add top or bottom pane
52 |
53 | CloseRoom(view)
54 | if no top or bottom, close entire tab
55 | else hide missing pane
56 |
57 | RefreshRoom(view)
58 |
59 | UpdateRoom(view, node, ChatUpdateType)
60 |
61 | ChatUpdateType (add, remove, refresh)
62 |
--------------------------------------------------------------------------------
/UI/Services/Share/ShareUI.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 |
6 | using DeOps.Interface;
7 | using DeOps.Implementation;
8 |
9 |
10 | namespace DeOps.Services.Share
11 | {
12 | class ShareUI : IServiceUI
13 | {
14 | CoreUI UI;
15 | OpCore Core;
16 | ShareService Share;
17 |
18 |
19 | public ShareUI(CoreUI ui, OpService service)
20 | {
21 | UI = ui;
22 | Core = ui.Core;
23 | Share = service as ShareService;
24 | }
25 |
26 | public void GetMenuInfo(InterfaceMenuType menuType, List menus, ulong user, uint project)
27 | {
28 | if (Core.Locations.ActiveClientCount(user) == 0)
29 | return;
30 |
31 | if (menuType == InterfaceMenuType.Internal)
32 | menus.Add(new MenuItemInfo("Data/Share", Res.ShareRes.Icon, new EventHandler(Menu_View)));
33 |
34 | if (menuType == InterfaceMenuType.External)
35 | menus.Add(new MenuItemInfo("Share", Res.ShareRes.Icon, new EventHandler(Menu_View)));
36 | }
37 |
38 | public void Menu_View(object sender, EventArgs args)
39 | {
40 | var node = sender as IViewParams;
41 | if (node == null)
42 | return;
43 |
44 | var view = new SharingView(Core, node.GetUser());
45 |
46 | UI.ShowView(view, node.IsExternal());
47 |
48 | Share.GetPublicList(node.GetUser());
49 | }
50 |
51 | public void GetNewsAction(ref System.Drawing.Icon symbol, ref EventHandler onClick)
52 | {
53 | symbol = Res.ShareRes.Icon;
54 | onClick = Menu_View;
55 | }
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/UI/Services/Storage/Forms/UnlockForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.IO;
7 | using System.Text;
8 | using System.Windows.Forms;
9 |
10 | namespace DeOps.Services.Storage
11 | {
12 | public partial class UnlockForm : DeOps.Interface.CustomIconForm
13 | {
14 | StorageView View;
15 |
16 |
17 | public UnlockForm(StorageView view)
18 | {
19 | InitializeComponent();
20 |
21 | View = view;
22 |
23 | // label
24 | string text = "Unlock ";
25 |
26 | text += View.Trust.GetProjectName(View.ProjectID) + "'s ";
27 | text += "File System to";
28 |
29 | MainLabel.Text = text;
30 |
31 | // link
32 | text = View.Core.User.RootPath + Path.DirectorySeparatorChar + View.Trust.GetProjectName(View.ProjectID) + " Storage";
33 |
34 | PathLink.Text = text;
35 | }
36 |
37 | private void PathLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
38 | {
39 | FolderBrowserDialog dialog = new FolderBrowserDialog();
40 |
41 | dialog.SelectedPath = PathLink.Text;
42 | dialog.ShowNewFolderButton = true;
43 |
44 | if (dialog.ShowDialog(this) == DialogResult.OK)
45 | PathLink.Text = dialog.SelectedPath;
46 | }
47 |
48 | private void OkButton_Click(object sender, EventArgs e)
49 | {
50 | DialogResult = DialogResult.OK;
51 | Close();
52 | }
53 |
54 | private void ExitButton_Click(object sender, EventArgs e)
55 | {
56 | Close();
57 | }
58 |
59 |
60 | }
61 | }
--------------------------------------------------------------------------------
/UI/Interface/Views/ExternalView.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace DeOps.Interface
2 | {
3 | partial class ExternalView
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.SuspendLayout();
32 | //
33 | // ExternalView
34 | //
35 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
36 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
37 | this.ClientSize = new System.Drawing.Size(501, 594);
38 | this.Name = "ExternalView";
39 | this.Text = "PanelHost";
40 | this.Load += new System.EventHandler(this.ExternalWin_Load);
41 | this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ExternalView_FormClosing);
42 | this.ResumeLayout(false);
43 |
44 | }
45 |
46 | #endregion
47 | }
48 | }
--------------------------------------------------------------------------------
/UI/Services/Plan/Goals/ProgressText.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace DeOps.Services.Plan
2 | {
3 | partial class ProgressText
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Component Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.SuspendLayout();
32 | //
33 | // ProgressText
34 | //
35 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
36 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
37 | this.Name = "ProgressText";
38 | this.Size = new System.Drawing.Size(226, 16);
39 | this.MouseEnter += new System.EventHandler(this.ProgressText_MouseEnter);
40 | this.Paint += new System.Windows.Forms.PaintEventHandler(this.ProgressText_Paint);
41 | this.MouseLeave += new System.EventHandler(this.ProgressText_MouseLeave);
42 | this.ResumeLayout(false);
43 |
44 | }
45 |
46 | #endregion
47 |
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/UI/Interface/Views/TreeListViewEx/TreeListView.resx:
--------------------------------------------------------------------------------
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 | text/microsoft-resx
32 |
33 |
34 | 1.0.0.0
35 |
36 |
37 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.3102.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
38 |
39 |
40 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.3102.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
41 |
42 |
43 |
--------------------------------------------------------------------------------
/UI/Services/Profile/ProfileUI.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 |
6 | using DeOps.Interface;
7 | using DeOps.Implementation;
8 |
9 |
10 | namespace DeOps.Services.Profile
11 | {
12 | class ProfileUI : IServiceUI
13 | {
14 | CoreUI UI;
15 | OpCore Core;
16 | ProfileService Profile;
17 |
18 |
19 | public ProfileUI(CoreUI ui, OpService service)
20 | {
21 | UI = ui;
22 | Core = ui.Core;
23 | Profile = service as ProfileService;
24 | }
25 |
26 | public void GetMenuInfo(InterfaceMenuType menuType, List menus, ulong user, uint project)
27 | {
28 | if (menuType == InterfaceMenuType.Internal)
29 | menus.Add(new MenuItemInfo("Data/Profile", ProfileRes.IconX, new EventHandler(Menu_View)));
30 |
31 | if (menuType == InterfaceMenuType.External)
32 | menus.Add(new MenuItemInfo("Profile", ProfileRes.IconX, new EventHandler(Menu_View)));
33 | }
34 |
35 | public void Menu_View(object sender, EventArgs args)
36 | {
37 | IViewParams node = sender as IViewParams;
38 |
39 | if (node == null)
40 | return;
41 |
42 | ulong key = node.GetUser();
43 |
44 | if (Profile.Network.Responsive)
45 | Profile.Research(key);
46 |
47 | // gui creates viewshell, component just passes view object
48 | var view = new ProfileView(Profile, key, node.GetProject());
49 |
50 | UI.ShowView(view, node.IsExternal());
51 | }
52 |
53 | public void GetNewsAction(ref System.Drawing.Icon symbol, ref EventHandler onClick)
54 | {
55 | symbol = ProfileRes.IconX;
56 | onClick = Menu_View;
57 | }
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/UI/Interface/Setup/CreateOp.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.IO;
7 | using System.Text;
8 | using System.Windows.Forms;
9 | using System.Security.Cryptography;
10 | using System.Xml;
11 |
12 | using DeOps.Implementation.Protocol;
13 |
14 | namespace DeOps.Interface
15 | {
16 | public partial class CreateOp : CustomIconForm
17 | {
18 | public string OpName = "";
19 | public AccessType OpAccess = AccessType.Public;
20 |
21 |
22 | public CreateOp()
23 | {
24 | InitializeComponent();
25 | }
26 |
27 | private void ButtonOK_Click(object sender, EventArgs e)
28 | {
29 | // check input data
30 | try
31 | {
32 | ValidateFields();
33 | }
34 | catch (Exception ex)
35 | {
36 | MessageBox.Show(this, ex.Message);
37 | return;
38 | }
39 |
40 | OpName = OpNameBox.Text;
41 |
42 | if (RadioPublic.Checked) OpAccess = AccessType.Public;
43 | if (RadioPrivate.Checked) OpAccess = AccessType.Private;
44 | if (RadioSecret.Checked) OpAccess = AccessType.Secret;
45 |
46 | DialogResult = DialogResult.OK;
47 | Close();
48 | }
49 |
50 | private void ValidateFields()
51 | {
52 | if (OpNameBox.Text.Length == 0)
53 | throw new Exception("Operation Name Blank");
54 |
55 | if (!RadioPublic.Checked && !RadioPrivate.Checked && !RadioSecret.Checked)
56 | throw new Exception("Access Type not specified");
57 | }
58 |
59 | private void ButtonCancel_Click(object sender, EventArgs e)
60 | {
61 | Close();
62 | }
63 | }
64 | }
--------------------------------------------------------------------------------
/UI/Interface/Views/TreeListViewEx/ContainerListView.resx:
--------------------------------------------------------------------------------
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 | text/microsoft-resx
32 |
33 |
34 | 1.0.0.0
35 |
36 |
37 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.3102.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
38 |
39 |
40 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.3102.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
41 |
42 |
43 |
--------------------------------------------------------------------------------
/Android/DroidOps/Resources/AboutResources.txt:
--------------------------------------------------------------------------------
1 | Images, layout descriptions, binary blobs and string dictionaries can be included
2 | in your application as resource files. Various Android APIs are designed to
3 | operate on the resource IDs instead of dealing with images, strings or binary blobs
4 | directly.
5 |
6 | For example, a sample Android app that contains a user interface layout (main.axml),
7 | an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
8 | would keep its resources in the "Resources" directory of the application:
9 |
10 | Resources/
11 | drawable/
12 | icon.png
13 |
14 | layout/
15 | main.axml
16 |
17 | values/
18 | strings.xml
19 |
20 | In order to get the build system to recognize Android resources, set the build action to
21 | "AndroidResource". The native Android APIs do not operate directly with filenames, but
22 | instead operate on resource IDs. When you compile an Android application that uses resources,
23 | the build system will package the resources for distribution and generate a class called "R"
24 | (this is an Android convention) that contains the tokens for each one of the resources
25 | included. For example, for the above Resources layout, this is what the R class would expose:
26 |
27 | public class R {
28 | public class drawable {
29 | public const int icon = 0x123;
30 | }
31 |
32 | public class layout {
33 | public const int main = 0x456;
34 | }
35 |
36 | public class strings {
37 | public const int first_string = 0xabc;
38 | public const int second_string = 0xbcd;
39 | }
40 | }
41 |
42 | You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main
43 | to reference the layout/main.axml file, or R.strings.first_string to reference the first
44 | string in the dictionary file values/strings.xml.
45 |
--------------------------------------------------------------------------------
/UI/Interface/Setup/InviteForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.IO;
7 | using System.Text;
8 | using System.Windows.Forms;
9 |
10 | using DeOps.Implementation;
11 |
12 | namespace DeOps.Interface
13 | {
14 | public partial class InviteForm : CustomIconForm
15 | {
16 | OpCore Core;
17 |
18 | int page = 1;
19 |
20 | public InviteForm(OpCore core)
21 | : base(core)
22 | {
23 | InitializeComponent();
24 |
25 | Core = core;
26 |
27 | HelpLabel.Text = HelpLabel.Text.Replace("", Core.User.Settings.Operation);
28 | }
29 |
30 | private void CreateButton_Click(object sender, EventArgs e)
31 | {
32 | if (page == 1)
33 | {
34 | try
35 | {
36 | string name;
37 | IdentityBox.Text = Core.GenerateInvite(IdentityBox.Text, out name);
38 |
39 |
40 | HelpLabel.Text = "This invitation can be safely given back to through any medium such as IM or Email.";
41 | HelpLabel.Text = HelpLabel.Text.Replace("", name);
42 |
43 | CopyLink.Visible = true;
44 | DirectionLabel.Text = "Invitation Created";
45 |
46 | NextButton.Text = "OK";
47 | page++;
48 | }
49 | catch (Exception ex)
50 | {
51 | MessageBox.Show(this, ex.Message);
52 | }
53 | }
54 |
55 | else if (page == 2)
56 | Close();
57 | }
58 |
59 | private void CopyLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
60 | {
61 | Clipboard.SetText(IdentityBox.Text);
62 | CopyLink.Text = "Copied";
63 | }
64 | }
65 | }
--------------------------------------------------------------------------------
/UI/Services/Voice/VoiceSettings.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Runtime.InteropServices;
8 | using System.Text;
9 | using System.Windows.Forms;
10 |
11 | using DeOps.Interface;
12 |
13 |
14 | namespace DeOps.Services.Voice
15 | {
16 | public partial class VoiceSettings : CustomIconForm
17 | {
18 | VoiceService Voices;
19 |
20 |
21 | public VoiceSettings(VoiceService voices)
22 | {
23 | InitializeComponent();
24 |
25 | Voices = voices;
26 |
27 | // recording
28 | for (int i = 0; i < WinMM.waveInGetNumDevs(); i++)
29 | {
30 | WinMM.WaveInCaps device = new WinMM.WaveInCaps();
31 |
32 | WinMM.ErrorCheck(WinMM.waveInGetDevCaps(i, ref device, Marshal.SizeOf(device)));
33 |
34 | DeviceInCombo.Items.Add(device.szPname);
35 | }
36 |
37 | DeviceInCombo.SelectedIndex = 0;
38 |
39 | // playback
40 | for (int i = 0; i < WinMM.waveOutGetNumDevs(); i++)
41 | {
42 | WinMM.WaveOutCaps device = new WinMM.WaveOutCaps();
43 |
44 | WinMM.ErrorCheck(WinMM.waveOutGetDevCaps(i, ref device, Marshal.SizeOf(device)));
45 |
46 | DeviceOutCombo.Items.Add(device.szPname);
47 |
48 | }
49 |
50 | DeviceOutCombo.SelectedIndex = 0;
51 | }
52 |
53 | private void OkButton_Click(object sender, EventArgs e)
54 | {
55 | Voices.RecordingDevice = DeviceInCombo.SelectedIndex;
56 | Voices.PlaybackDevice = DeviceOutCombo.SelectedIndex;
57 |
58 | Voices.ResetDevices();
59 |
60 | Close();
61 | }
62 |
63 | private void CloseButton_Click(object sender, EventArgs e)
64 | {
65 | Close();
66 | }
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/UI/Services/Share/AcceptFileForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 |
10 | using DeOps.Interface;
11 | using DeOps.Implementation;
12 | using DeOps.Implementation.Protocol.Net;
13 |
14 |
15 | namespace DeOps.Services.Share
16 | {
17 | public partial class AcceptFileForm : CustomIconForm
18 | {
19 | OpCore Core;
20 | ShareService Sharing;
21 |
22 | SharedFile TheFile;
23 | DhtClient Source;
24 |
25 | public AcceptFileForm(OpCore core, DhtClient client, SharedFile share)
26 | {
27 | InitializeComponent();
28 |
29 | Core = core;
30 | Sharing = core.GetService(ServiceIDs.Share) as ShareService;
31 |
32 | TheFile = share;
33 | Source = client;
34 |
35 | DescriptionLabel.Text = core.GetName(client.UserID) + " wants to send you a file";
36 |
37 | NameLabel.Text = TheFile.Name;
38 |
39 | SizeLabel.Text = Utilities.ByteSizetoDecString(TheFile.Size);
40 | }
41 |
42 | private void AcceptButton_Click(object sender, EventArgs e)
43 | {
44 | /* Sharing.AcceptRequest(Source, TheFile);
45 |
46 | // try to find an external existing view and use it, the make a new one
47 |
48 | // show the user the transfer starting
49 | if (Core.GuiMain is MainForm && !((MainForm)Core.GuiMain).SideMode)
50 | Core.ShowInternal(new SharingView(Core, Core.UserID));
51 |
52 | else if (!Core.GuiMain.ShowExistingView(typeof(SharingView)))
53 | Core.ShowExternal(new SharingView(Core, Core.UserID));
54 |
55 | Close();*/
56 | }
57 |
58 | private void DenyButton_Click(object sender, EventArgs e)
59 | {
60 | Close();
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/UI/Services/Storage/StorageUI.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using DeOps.Interface;
6 | using DeOps.Implementation;
7 |
8 | namespace DeOps.Services.Storage
9 | {
10 | class StorageUI : IServiceUI
11 | {
12 | CoreUI UI;
13 | OpCore Core;
14 | StorageService Storage;
15 |
16 |
17 | public StorageUI(CoreUI ui, OpService service)
18 | {
19 | UI = ui;
20 | Core = ui.Core;
21 | Storage = service as StorageService;
22 |
23 | Storage.Disposing += Storage_Disposing;
24 | }
25 |
26 | public void GetMenuInfo(InterfaceMenuType menuType, List menus, ulong user, uint project)
27 | {
28 | if (menuType == InterfaceMenuType.Internal)
29 | menus.Add(new MenuItemInfo("Data/File System", StorageRes.Icon, new EventHandler(Menu_View)));
30 |
31 | if (menuType == InterfaceMenuType.External)
32 | menus.Add(new MenuItemInfo("File System", StorageRes.Icon, new EventHandler(Menu_View)));
33 | }
34 |
35 | public void Menu_View(object sender, EventArgs args)
36 | {
37 | var node = sender as IViewParams;
38 | if (node == null)
39 | return;
40 |
41 | var view = new StorageView(UI, Storage, node.GetUser(), node.GetProject());
42 |
43 | UI.ShowView(view, node.IsExternal());
44 | }
45 |
46 | public void GetNewsAction(ref System.Drawing.Icon symbol, ref EventHandler onClick)
47 | {
48 | symbol = StorageRes.Icon;
49 | onClick = Menu_View;
50 | }
51 |
52 | public void Storage_Disposing()
53 | {
54 | if (Storage.HashFiles.Pending.Count > 0)
55 | {
56 | var status = new HashStatus(Storage);
57 | status.ShowDialog();
58 | }
59 | }
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/UI/Services/Buddy/BuddyUI.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 |
6 | using DeOps.Interface;
7 | using DeOps.Implementation;
8 | using DeOps.Interface.Setup;
9 |
10 |
11 | namespace DeOps.Services.Buddy
12 | {
13 | public class BuddyUI : IServiceUI
14 | {
15 | CoreUI UI;
16 | OpCore Core;
17 | BuddyService Buddies;
18 |
19 |
20 | public BuddyUI(CoreUI ui, OpService service)
21 | {
22 | UI = ui;
23 | Core = ui.Core;
24 | Buddies = service as BuddyService;
25 | }
26 |
27 | public void GetMenuInfo(InterfaceMenuType menuType, List menus, ulong user, uint project)
28 | {
29 | if (menuType != InterfaceMenuType.Quick)
30 | return;
31 |
32 | if (user != Core.UserID && !Buddies.BuddyList.SafeContainsKey(user))
33 | menus.Add(new MenuItemInfo("Add Buddy", BuddyRes.buddy_add, new EventHandler(Menu_Add)));
34 |
35 | menus.Add(new MenuItemInfo("Identity", BuddyRes.buddy_who, new EventHandler(Menu_Identity)));
36 | }
37 |
38 | private void Menu_Add(object sender, EventArgs e)
39 | {
40 | if (!(sender is IViewParams))
41 | return;
42 |
43 | ulong user = ((IViewParams)sender).GetUser();
44 |
45 | Buddies.AddBuddy(user);
46 | }
47 |
48 | private void Menu_Identity(object sender, EventArgs e)
49 | {
50 | if (!(sender is IViewParams))
51 | return;
52 |
53 | ulong user = ((IViewParams)sender).GetUser();
54 |
55 | ShowIdentity(user);
56 | }
57 |
58 | public void ShowIdentity(ulong user)
59 | {
60 | new IdentityForm(Core, user).ShowDialog();
61 | }
62 |
63 | public void GetNewsAction(ref System.Drawing.Icon symbol, ref EventHandler onClick)
64 | {
65 |
66 | }
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/Android/DroidOps/Resources/Resource.designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.17929
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DroidOps
12 | {
13 |
14 |
15 | public partial class Resource
16 | {
17 |
18 | public partial class Attribute
19 | {
20 |
21 | private Attribute()
22 | {
23 | }
24 | }
25 |
26 | public partial class Drawable
27 | {
28 |
29 | // aapt resource value: 0x7f020000
30 | public const int Icon = 2130837504;
31 |
32 | private Drawable()
33 | {
34 | }
35 | }
36 |
37 | public partial class Id
38 | {
39 |
40 | // aapt resource value: 0x7f050001
41 | public const int CreateUserButton = 2131034113;
42 |
43 | // aapt resource value: 0x7f050004
44 | public const int LogTextView = 2131034116;
45 |
46 | // aapt resource value: 0x7f050002
47 | public const int LoginButton = 2131034114;
48 |
49 | // aapt resource value: 0x7f050003
50 | public const int LogoffButton = 2131034115;
51 |
52 | // aapt resource value: 0x7f050000
53 | public const int StatusTextView = 2131034112;
54 |
55 | private Id()
56 | {
57 | }
58 | }
59 |
60 | public partial class Layout
61 | {
62 |
63 | // aapt resource value: 0x7f030000
64 | public const int Main = 2130903040;
65 |
66 | private Layout()
67 | {
68 | }
69 | }
70 |
71 | public partial class String
72 | {
73 |
74 | // aapt resource value: 0x7f040001
75 | public const int app_name = 2130968577;
76 |
77 | // aapt resource value: 0x7f040000
78 | public const int hello = 2130968576;
79 |
80 | private String()
81 | {
82 | }
83 | }
84 | }
85 | }
86 |
--------------------------------------------------------------------------------
/UI/Services/Trust/Link.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 | IsTrusted(id) returns yes, no, checking - all componenents should implement
4 |
5 |
6 |
7 | ------------------------------------
8 | minimal loading, not really necessary 50 isnt that much to have in tree, rest are auto pruned already
9 |
10 | load roots
11 | expand to self
12 | expand to selected
13 | update root links
14 | expand roots
15 |
16 | on expand
17 | show child nodes
18 | load but hide children of children
19 | update child links
20 |
21 | on collapse
22 | remove nodes 2 levels down
23 |
24 | on select
25 | update link
26 |
27 | interface link update
28 | if removed, and on tree, remove from tree
29 | if node's parent visible
30 | add as hidden child
31 |
32 |
33 | -----------------------------------------------
34 |
35 | new link system
36 | startup
37 | load link files, as opposed to store data from profile
38 | if local link file doesnt exist, create
39 | connect to network...
40 |
41 | post link header
42 | find nodes closest to local id
43 | send store req
44 |
45 | receive store req
46 | if new
47 | update link header
48 | get link file
49 | if old
50 | send current link header
51 |
52 | link search complete
53 | post with closest node that didnt have link header
54 |
55 | receive search req
56 | min version specified
57 |
58 | linkup/confirm/unlink
59 | rebuild / post new link header
60 |
61 | link header
62 | version
63 | file hash
64 |
65 | link file
66 | header
67 | project packets
68 | id
69 | name
70 | title
71 | link packets
72 | uplink
73 | user name?
74 | project id
75 |
76 |
77 | replicated
78 | notify components of patch to be built
79 | components built their own patch strucuture
80 |
81 | receive patch -> component
82 | if dont have item in patch
83 | start search for data specific to hash, stop when 1 found
84 | bootstrap search with patch node
85 | donwnload data on result
86 |
87 | ttl
88 | components sign up for timer notification
89 | handle their own data
90 |
91 |
92 |
93 |
94 |
--------------------------------------------------------------------------------
/UI/Services/Chat/ChatUI.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 |
6 | using DeOps.Interface;
7 | using DeOps.Implementation;
8 |
9 |
10 | namespace DeOps.Services.Chat
11 | {
12 | class ChatUI : IServiceUI
13 | {
14 | CoreUI UI;
15 | OpCore Core;
16 | ChatService Chat;
17 |
18 |
19 | public ChatUI(CoreUI ui, OpService service)
20 | {
21 | UI = ui;
22 | Core = ui.Core;
23 | Chat = service as ChatService;
24 |
25 | Chat.NewInvite += Chat_NewInvite;
26 | }
27 |
28 | public void GetMenuInfo(InterfaceMenuType menuType, List menus, ulong key, uint proj)
29 | {
30 | if (key != Core.UserID)
31 | return;
32 |
33 | if (menuType == InterfaceMenuType.Internal)
34 | menus.Add(new MenuItemInfo("Comm/Chat", ChatRes.Icon, new EventHandler(Menu_View)));
35 |
36 | if (menuType == InterfaceMenuType.External)
37 | menus.Add(new MenuItemInfo("Chat", ChatRes.Icon, new EventHandler(Menu_View)));
38 | }
39 |
40 | void Menu_View(object sender, EventArgs args)
41 | {
42 | IViewParams node = sender as IViewParams;
43 |
44 | if (node == null)
45 | return;
46 |
47 | if (node.GetUser() != Core.UserID)
48 | return;
49 |
50 | // gui creates viewshell, component just passes view object
51 | var view = new ChatView(UI, Chat, node.GetProject());
52 |
53 | UI.ShowView(view, node.IsExternal());
54 | }
55 |
56 | public void GetNewsAction(ref System.Drawing.Icon symbol, ref EventHandler onClick)
57 | {
58 | symbol = ChatRes.Icon;
59 | onClick = Menu_View;
60 | }
61 |
62 | public void Chat_NewInvite(ulong userID, ChatRoom room)
63 | {
64 | new InviteForm(UI, Chat, userID, room).ShowDialog();
65 | }
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/UI/Services/Chat/InviteForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 |
10 | using DeOps.Implementation;
11 | using DeOps.Interface;
12 |
13 |
14 | namespace DeOps.Services.Chat
15 | {
16 | public partial class InviteForm : CustomIconForm
17 | {
18 | CoreUI UI;
19 | OpCore Core;
20 | ChatService Chat;
21 | ChatRoom Room;
22 |
23 | public InviteForm(CoreUI ui, ChatService chat, ulong user, ChatRoom room)
24 | {
25 | InitializeComponent();
26 |
27 | UI = ui;
28 | Core = ui.Core;
29 | Chat = chat;
30 | Room = room;
31 |
32 | IntroLabel.Text = IntroLabel.Text.Replace("", Core.GetName(user));
33 |
34 | NameLabel.Text = room.Title;
35 |
36 | TypeLabel.Text = room.Kind.ToString();
37 | }
38 |
39 | private void JoinButton_Click(object sender, EventArgs e)
40 | {
41 | Chat.JoinRoom(Room);
42 |
43 | // show the user the transfer starting
44 | if (UI.GuiMain is MainForm && !((MainForm)UI.GuiMain).SideMode)
45 | UI.ShowView(new ChatView(UI, Chat, 0) { Custom = Room }, false);
46 |
47 | else
48 | {
49 | ExternalView view = UI.GuiMain.FindViewType(typeof(ChatView));
50 |
51 | if (view == null)
52 | UI.ShowView(new ChatView(UI, Chat, 0) { Custom = Room }, true);
53 |
54 | else
55 | {
56 | ((ChatView)view.Shell).SetCustomRoom(Room);
57 |
58 | view.WindowState = FormWindowState.Normal;
59 | view.Activate();
60 | }
61 | }
62 |
63 | Close();
64 | }
65 |
66 | private void IgnoreButton_Click(object sender, EventArgs e)
67 | {
68 | Close();
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/UI/Simulator/TrackFile.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Text;
7 | using System.Windows.Forms;
8 |
9 | using DeOps.Interface;
10 |
11 |
12 | namespace DeOps.Simulator
13 | {
14 | public partial class TrackFile : CustomIconForm
15 | {
16 | NetView View;
17 |
18 | public TrackFile(NetView view)
19 | {
20 | InitializeComponent();
21 |
22 | View = view;
23 | }
24 |
25 | private void TrackFile_Load(object sender, EventArgs e)
26 | {
27 | if (View.TrackHash != null)
28 | HashBox.Text = Utilities.ToBase64String(View.TrackHash);
29 |
30 | UpdateTrackButton();
31 | }
32 |
33 | private void TrackButton_Click(object sender, EventArgs e)
34 | {
35 | View.TrackString = HashBox.Text;
36 | View.TrackHash = Utilities.FromBase64String(HashBox.Text);
37 | View.TrackHashID = BitConverter.ToUInt64(View.TrackHash, 0);
38 |
39 | UpdateTrackButton();
40 |
41 | View.OnUpdateView();
42 |
43 | Close();
44 | }
45 |
46 | private void ClearButton_Click(object sender, EventArgs e)
47 | {
48 | View.TrackHash = null;
49 | View.TrackHashID = 0;
50 | View.TrackString = null;
51 |
52 | HashBox.Text = "";
53 |
54 | UpdateTrackButton();
55 |
56 | View.OnUpdateView();
57 |
58 | Close();
59 | }
60 |
61 | private void HashBox_TextChanged(object sender, EventArgs e)
62 | {
63 | UpdateTrackButton();
64 | }
65 |
66 | void UpdateTrackButton()
67 | {
68 | byte[] newHash = Utilities.FromBase64String(HashBox.Text);
69 |
70 | if (Utilities.MemCompare(newHash, View.TrackHash))
71 | TrackButton.Text = "Tracking";
72 | else
73 | TrackButton.Text = "Track";
74 | }
75 |
76 |
77 | }
78 | }
--------------------------------------------------------------------------------
/Core/Utilities/WorkerQueue.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Diagnostics;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading;
7 |
8 |
9 | namespace DeOps.Utility
10 | {
11 | public class WorkerQueue : IDisposable
12 | {
13 | Thread WorkerHandle;
14 | public LinkedList> Pending = new LinkedList>();
15 |
16 | bool KillThread;
17 |
18 | string Name = "WorkerQueue";
19 |
20 | public WorkerQueue(string name)
21 | {
22 | Name = name;
23 | }
24 |
25 | public void Dispose()
26 | {
27 | KillThread = true;
28 |
29 | if (WorkerHandle != null)
30 | Debug.Assert(WorkerHandle.Join(5000));
31 | }
32 |
33 | public void Enqueue(Action action)
34 | {
35 | Enqueue(action, null);
36 | }
37 |
38 | public void Enqueue(Action action, object arg)
39 | {
40 | // enqueue file for processing
41 | lock (Pending)
42 | Pending.AddLast(new Tuple(action, arg));
43 |
44 | // hashing
45 | if (WorkerHandle == null || !WorkerHandle.IsAlive)
46 | {
47 | WorkerHandle = new Thread(Worker);
48 | WorkerHandle.Start();
49 | }
50 | }
51 |
52 | void Worker()
53 | {
54 | Tuple next = null;
55 |
56 | // while files on processing list
57 | while (Pending.Count > 0 && !KillThread)
58 | {
59 | lock (WorkerHandle)
60 | next = Pending.First.Value;
61 |
62 | try
63 | {
64 | next.Param1.Invoke();
65 | }
66 | catch { }
67 |
68 | lock (WorkerHandle) // dont remove right away so pending count is accurate while processing
69 | Pending.RemoveFirst();
70 | }
71 |
72 | WorkerHandle = null;
73 | }
74 |
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/UI/Services/Plan/Schedule/BlockRow.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace DeOps.Services.Plan
2 | {
3 | partial class BlockRow
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Component Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.SuspendLayout();
32 | //
33 | // BlockRow
34 | //
35 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
36 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
37 | this.DoubleBuffered = true;
38 | this.Name = "BlockRow";
39 | this.Size = new System.Drawing.Size(309, 22);
40 | this.VisibleChanged += new System.EventHandler(this.BlockRow_VisibleChanged);
41 | this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.BlockRow_MouseMove);
42 | this.MouseClick += new System.Windows.Forms.MouseEventHandler(this.BlockRow_MouseClick);
43 | this.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.BlockRow_MouseDoubleClick);
44 | this.Resize += new System.EventHandler(this.BlockRow_Resize);
45 | this.Paint += new System.Windows.Forms.PaintEventHandler(this.BlockRow_Paint);
46 | this.ResumeLayout(false);
47 |
48 | }
49 |
50 | #endregion
51 |
52 |
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/UI/Services/Storage/Forms/HashStatus.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 |
10 |
11 |
12 | namespace DeOps.Services.Storage
13 | {
14 | public partial class HashStatus : DeOps.Interface.CustomIconForm
15 | {
16 | StorageService Storages;
17 |
18 | public HashStatus(StorageService storages)
19 | {
20 | InitializeComponent();
21 |
22 | Storages = storages;
23 | }
24 |
25 | private void QuarterSecondTimer_Tick(object sender, EventArgs e)
26 | {
27 | if (Storages.HashFiles.Pending.Count == 0)
28 | Close();
29 |
30 | // Securing test.mpg, 2 files left, 200 MB total
31 |
32 | HashPack pack = null;
33 | long totalSize = 0;
34 |
35 | lock (Storages.HashFiles.Pending)
36 | {
37 | pack = Storages.HashFiles.Pending.First.Value.Param2 as HashPack;
38 |
39 | foreach (HashPack packy in Storages.HashFiles.Pending.Select(p => p.Param2 as HashPack))
40 | totalSize += packy.File.Info.Size;
41 | }
42 |
43 | if (pack == null)
44 | return;
45 |
46 | string status = "Securing '" + pack.File.Info.Name + "'\r\n";
47 |
48 | int filesLeft = Storages.HashFiles.Pending.Count - 1;
49 |
50 | if (filesLeft > 0)
51 | if (filesLeft == 1)
52 | status += "1 File Left\r\n";
53 | else
54 | status += filesLeft.ToString() + " Files Left\r\n";
55 |
56 | status += Utilities.ByteSizetoString(totalSize) + " Total";
57 |
58 |
59 | StatusLabel.Text = status;
60 | }
61 |
62 | private void CancelButton_Click(object sender, EventArgs e)
63 | {
64 | // hashing could hang if we have no access to the file
65 |
66 | // files with no hash value will not be saved to header file
67 |
68 | Close();
69 | }
70 | }
71 | }
--------------------------------------------------------------------------------
/UI/Services/Share/ShareInfoPanel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Drawing;
5 | using System.Data;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 |
10 | namespace DeOps.Services.Share
11 | {
12 | public partial class ShareInfoPanel : UserControl
13 | {
14 | const string HelpPage = @"
15 |
16 |
20 |
27 |
28 |
29 |
30 |
31 |
32 |
33 | - Files in your Share are only available when you are online.
34 | - Right-click a file for more options
35 | - Others can remotely browse your files marked 'public'
36 | - When sending to multiple people, transfers are automatically multi-sourced to speed the process.
37 |
38 |
39 |
40 |
41 | ";
42 |
43 | public ShareInfoPanel()
44 | {
45 | InitializeComponent();
46 |
47 | InfoBrowser.DocumentText = HelpPage;
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/UI/Services/Trust/LinkChooser.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Text;
7 | using System.Windows.Forms;
8 |
9 | using DeOps.Interface.TLVex;
10 | using DeOps.Components.Link;
11 |
12 |
13 | namespace DeOps.Components.Link
14 | {
15 | internal partial class LinkChooser : Form
16 | {
17 | LinkControl Links;
18 | uint ProjectID;
19 |
20 | internal List People = new List();
21 |
22 |
23 | internal LinkChooser(LinkControl links, uint project)
24 | {
25 | InitializeComponent();
26 |
27 | Links = links;
28 | ProjectID = project;
29 | }
30 |
31 | private void LinkChooser_Load(object sender, EventArgs e)
32 | {
33 |
34 | PersonTree.Init(Links);
35 |
36 | /*LinkNode parent = new LinkNode(Links.LocalLink);
37 |
38 | AddChildren(parent, Links.LocalLink);
39 |
40 | // dont add root
41 |
42 | foreach(LinkNode child in parent.Nodes)
43 | LinkTree.Nodes.Add(child);
44 |
45 | parent.Expand();*/
46 | }
47 |
48 | /*private void AddChildren(LinkNode parent, OpLink link)
49 | {
50 | if(link.Confirmed.ContainsKey(ProjectID) && link.Downlinks.ContainsKey(ProjectID))
51 | foreach(OpLink downlink in link.Downlinks[ProjectID])
52 | if (link.Confirmed[ProjectID].Contains(downlink.DhtID))
53 | {
54 | LinkNode child = new LinkNode(downlink);
55 | AddChildren(child, downlink);
56 | parent.Nodes.Add(child);
57 | }
58 | }*/
59 |
60 | private void AddButton_Click(object sender, EventArgs e)
61 | {
62 | //foreach (LinkNode node in LinkTree.SelectedNodes)
63 | // People.Add(node.DhtID);
64 |
65 | DialogResult = DialogResult.OK;
66 |
67 | Close();
68 | }
69 |
70 | private void TheCancelButton_Click(object sender, EventArgs e)
71 | {
72 | Close();
73 | }
74 |
75 | }
76 | }
--------------------------------------------------------------------------------
/UI/Interface/Info/NetworkPanel.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace DeOps.Interface.Tools
2 | {
3 | partial class NetworkPanel
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Component Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.components = new System.ComponentModel.Container();
32 | this.UpdateTimer = new System.Windows.Forms.Timer(this.components);
33 | this.SuspendLayout();
34 | //
35 | // UpdateTimer
36 | //
37 | this.UpdateTimer.Enabled = true;
38 | this.UpdateTimer.Interval = 200;
39 | this.UpdateTimer.Tick += new System.EventHandler(this.UpdateTimer_Tick);
40 | //
41 | // NetworkPanel
42 | //
43 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
44 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
45 | this.DoubleBuffered = true;
46 | this.Name = "NetworkPanel";
47 | this.Size = new System.Drawing.Size(245, 231);
48 | this.Paint += new System.Windows.Forms.PaintEventHandler(this.NetworkPanel_Paint);
49 | this.Resize += new System.EventHandler(this.NetworkPanel_Resize);
50 | this.ResumeLayout(false);
51 |
52 | }
53 |
54 | #endregion
55 |
56 | private System.Windows.Forms.Timer UpdateTimer;
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/UI/Interface/Settings/UpnpLog.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 |
10 | using DeOps.Implementation;
11 | using DeOps.Implementation.Transport;
12 |
13 |
14 | namespace DeOps.Interface.Settings
15 | {
16 | public partial class UpnpLog : CustomIconForm
17 | {
18 | UpnpSetup Setup;
19 | UPnPHandler UPnP;
20 |
21 |
22 | public UpnpLog(UpnpSetup setup)
23 | {
24 | InitializeComponent();
25 |
26 | Setup = setup;
27 | UPnP = Setup.UPnP;
28 |
29 | RefreshView();
30 | }
31 |
32 | private void RefreshLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
33 | {
34 | RefreshView();
35 | }
36 |
37 | private void RefreshView()
38 | {
39 | LogBox.Clear();
40 |
41 | UPnP.Log.LockReading(() =>
42 | {
43 | foreach (Tuple item in UPnP.Log)
44 | {
45 | LogBox.SelectionStart = LogBox.Text.Length;
46 | LogBox.SelectionLength = 0;
47 |
48 | switch (item.Param1)
49 | {
50 | case UpnpLogType.In:
51 | LogBox.SelectionColor = Color.Blue;
52 | break;
53 | case UpnpLogType.Out:
54 | LogBox.SelectionColor = Color.Red;
55 | break;
56 | case UpnpLogType.Other:
57 | LogBox.SelectionColor = Color.Black;
58 | break;
59 | case UpnpLogType.Error:
60 | LogBox.SelectionColor = Color.Orange;
61 | break;
62 | }
63 |
64 | LogBox.AppendText(item.Param2 + "\n\n");
65 | }
66 | });
67 | }
68 |
69 | private void UpnpLog_FormClosing(object sender, FormClosingEventArgs e)
70 | {
71 | Setup.Log = null;
72 | }
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/UI/Interface/Views/GetTextDialog.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Text;
7 | using System.Windows.Forms;
8 |
9 | using DeOps.Implementation;
10 |
11 |
12 | namespace DeOps.Interface
13 | {
14 | public partial class GetTextDialog : CustomIconForm
15 | {
16 | // default icon
17 | public GetTextDialog(string title, string direction, string defaultText)
18 | {
19 | InitializeComponent();
20 |
21 | SetupBox(title, direction, defaultText);
22 | }
23 |
24 | // main operation icon
25 | public GetTextDialog(OpCore core, string title, string direction, string defaultText)
26 | : base(core)
27 | {
28 | InitializeComponent();
29 |
30 | SetupBox(title, direction, defaultText);
31 | }
32 |
33 | // service icon
34 | public GetTextDialog(Icon image, string title, string direction, string defaultText)
35 | {
36 | InitializeComponent();
37 |
38 | SetupBox(title, direction, defaultText);
39 |
40 | Icon = image;
41 | }
42 |
43 | public void BigResultBox()
44 | {
45 | ResultBox.Multiline = true;
46 | ResultBox.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
47 | Width = 350;
48 | Height = 200;
49 | }
50 |
51 | void SetupBox(string title, string direction, string defaultText)
52 | {
53 | Text = title;
54 | DirectionLabel.Text = direction;
55 | ResultBox.Text = defaultText;
56 | }
57 |
58 | private void GetTextDialog_Load(object sender, EventArgs e)
59 | {
60 | if (DirectionLabel.Width > ResultBox.Width)
61 | Width = DirectionLabel.Width + 35;
62 | }
63 |
64 | private void OkButton_Click(object sender, EventArgs e)
65 | {
66 | DialogResult = DialogResult.OK;
67 | Close();
68 | }
69 |
70 | private void ExitButton_Click(object sender, EventArgs e)
71 | {
72 | Close();
73 | }
74 |
75 | }
76 | }
--------------------------------------------------------------------------------
/UI/Services/Plan/PlanUI.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 |
6 | using DeOps.Interface;
7 | using DeOps.Implementation;
8 |
9 |
10 | namespace DeOps.Services.Plan
11 | {
12 | class PlanUI : IServiceUI
13 | {
14 | CoreUI UI;
15 | OpCore Core;
16 | PlanService Plan;
17 |
18 |
19 | public PlanUI(CoreUI ui, OpService service)
20 | {
21 | UI = ui;
22 | Core = ui.Core;
23 | Plan = service as PlanService;
24 | }
25 |
26 | public void GetMenuInfo(InterfaceMenuType menuType, List menus, ulong user, uint project)
27 | {
28 | if (menuType == InterfaceMenuType.Internal)
29 | {
30 | menus.Add(new MenuItemInfo("Plans/Schedule", PlanRes.Schedule, new EventHandler(Menu_ScheduleView)));
31 | menus.Add(new MenuItemInfo("Plans/Goals", PlanRes.Goals, new EventHandler(Menu_GoalsView)));
32 | }
33 |
34 | if (menuType == InterfaceMenuType.External)
35 | {
36 | menus.Add(new MenuItemInfo("Schedule", PlanRes.Schedule, new EventHandler(Menu_ScheduleView)));
37 | menus.Add(new MenuItemInfo("Goals", PlanRes.Goals, new EventHandler(Menu_GoalsView)));
38 | }
39 | }
40 |
41 | void Menu_ScheduleView(object sender, EventArgs args)
42 | {
43 | IViewParams node = sender as IViewParams;
44 |
45 | if (node == null)
46 | return;
47 |
48 | var view = new ScheduleView(UI, Plan, node.GetUser(), node.GetProject());
49 |
50 | UI.ShowView(view, node.IsExternal());
51 | }
52 |
53 | void Menu_GoalsView(object sender, EventArgs args)
54 | {
55 | IViewParams node = sender as IViewParams;
56 |
57 | if (node == null)
58 | return;
59 |
60 | var view = new GoalsView(UI, Plan, node.GetUser(), node.GetProject());
61 |
62 | UI.ShowView(view, node.IsExternal());
63 | }
64 |
65 | public void GetNewsAction(ref System.Drawing.Icon symbol, ref EventHandler onClick)
66 | {
67 | symbol = PlanRes.Schedule;
68 | onClick = Menu_ScheduleView;
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/UI/Simulator/SelectServices.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Text;
7 | using System.Windows.Forms;
8 |
9 | using DeOps.Implementation;
10 | using DeOps.Services;
11 |
12 |
13 | namespace DeOps.Simulator
14 | {
15 | public partial class SelectServices : Form
16 | {
17 | SimForm Sim;
18 | RunServiceMethod Method;
19 |
20 |
21 | public SelectServices(SimForm sim, string title, RunServiceMethod method)
22 | {
23 | InitializeComponent();
24 |
25 | Sim = sim;
26 | Text = title;
27 | Method = method;
28 |
29 | foreach (ListInstanceItem item in Sim.ListInstances.Items)
30 | if (item.Core != null)
31 | {
32 | DeOpsContext sample = item.Core.Context;
33 |
34 | foreach (uint id in sample.KnownServices.Keys)
35 | ServiceList.Items.Add(new ServiceItem(id, sample.KnownServices[id]));
36 |
37 | break;
38 | }
39 | }
40 |
41 | private void TestButton_Click(object sender, EventArgs e)
42 | {
43 | List selected = new List();
44 |
45 | foreach (ServiceItem item in ServiceList.SelectedItems)
46 | selected.Add(item.ID);
47 |
48 |
49 | if (selected.Count > 0)
50 | foreach (ListInstanceItem item in Sim.ListInstances.SelectedItems)
51 | if (item.Core != null)
52 | foreach (OpService service in item.Core.ServiceMap.Values)
53 | if (selected.Contains(service.ServiceID))
54 | Method.Invoke(service);
55 | }
56 |
57 | private void ExitButton_Click(object sender, EventArgs e)
58 | {
59 | Close();
60 | }
61 | }
62 |
63 | public class ServiceItem
64 | {
65 | public uint ID;
66 | public string Name;
67 |
68 | public ServiceItem(uint id, string name)
69 | {
70 | ID = id;
71 | Name = name;
72 | }
73 |
74 | public override string ToString()
75 | {
76 | return Name;
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/UI/Interface/Settings/User.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Text;
7 | using System.Windows.Forms;
8 |
9 | using DeOps.Implementation;
10 |
11 |
12 | namespace DeOps.Interface.Settings
13 | {
14 | public partial class User : CustomIconForm
15 | {
16 | OpUser Profile;
17 |
18 | public User(OpCore core)
19 | : base(core)
20 | {
21 | InitializeComponent();
22 |
23 | Profile = core.User;
24 |
25 | NameBox.Text = Profile.Settings.UserName;
26 | }
27 |
28 | private void OKButton_Click(object sender, EventArgs e)
29 | {
30 | // check for errors
31 | string error = ValidateFields();
32 |
33 | if (error != null)
34 | {
35 | MessageBox.Show(this, error, "User Settings");
36 | return;
37 | }
38 |
39 | bool verify = false;
40 |
41 | // set user name
42 | if (Profile.Settings.UserName != NameBox.Text)
43 | verify = true;
44 |
45 | // set password
46 | if (NewPassBox.Text != "")
47 | verify = true;
48 |
49 | // save
50 | if (verify && GuiUtils.VerifyPassphrase(Profile.Core, ThreatLevel.High))
51 | {
52 | Profile.Settings.UserName = NameBox.Text;
53 |
54 | if (NewPassBox.Text != "")
55 | Profile.SetNewPassword(NewPassBox.Text);
56 |
57 | Profile.Core.RunInCoreAsync(delegate()
58 | {
59 | Profile.Save();
60 | Profile.Core.Trust.SaveLocal();
61 | });
62 | }
63 |
64 |
65 | Close();
66 | }
67 |
68 | private string ValidateFields()
69 | {
70 | if (NameBox.Text == "")
71 | return "Name cannont be blank";
72 |
73 | if (NewPassBox.Text != "")
74 | if (NewPassBox.Text != ConfirmPassBox.Text)
75 | return "New passphrase does not match confirmation";
76 |
77 | return null;
78 | }
79 |
80 | private void CloseButton_Click(object sender, EventArgs e)
81 | {
82 | Close();
83 | }
84 | }
85 | }
86 |
--------------------------------------------------------------------------------
/UI/Services/Storage/InfoPanel.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace DeOps.Services.Storage
2 | {
3 | partial class InfoPanel
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Component Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.InfoDisplay = new DeOps.Interface.Views.WebBrowserEx();
32 | this.SuspendLayout();
33 | //
34 | // InfoDisplay
35 | //
36 | this.InfoDisplay.AllowWebBrowserDrop = false;
37 | this.InfoDisplay.Dock = System.Windows.Forms.DockStyle.Fill;
38 | this.InfoDisplay.IsWebBrowserContextMenuEnabled = false;
39 | this.InfoDisplay.Location = new System.Drawing.Point(0, 0);
40 | this.InfoDisplay.MinimumSize = new System.Drawing.Size(20, 20);
41 | this.InfoDisplay.Name = "InfoDisplay";
42 | this.InfoDisplay.Size = new System.Drawing.Size(150, 150);
43 | this.InfoDisplay.TabIndex = 0;
44 | this.InfoDisplay.ScriptErrorsSuppressed = true;
45 | this.InfoDisplay.Navigating += new System.Windows.Forms.WebBrowserNavigatingEventHandler(this.InfoDisplay_Navigating);
46 | //
47 | // InfoPanel
48 | //
49 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
50 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
51 | this.Controls.Add(this.InfoDisplay);
52 | this.Name = "InfoPanel";
53 | this.ResumeLayout(false);
54 |
55 | }
56 |
57 | #endregion
58 |
59 | public DeOps.Interface.Views.WebBrowserEx InfoDisplay;
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/UI/Services/Share/ShareInfoPanel.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace DeOps.Services.Share
2 | {
3 | partial class ShareInfoPanel
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Component Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.InfoBrowser = new DeOps.Interface.Views.WebBrowserEx();
32 | this.SuspendLayout();
33 | //
34 | // InfoBrowser
35 | //
36 | this.InfoBrowser.AllowWebBrowserDrop = false;
37 | this.InfoBrowser.Dock = System.Windows.Forms.DockStyle.Fill;
38 | this.InfoBrowser.IsWebBrowserContextMenuEnabled = false;
39 | this.InfoBrowser.Location = new System.Drawing.Point(0, 0);
40 | this.InfoBrowser.MinimumSize = new System.Drawing.Size(20, 20);
41 | this.InfoBrowser.Name = "InfoBrowser";
42 | this.InfoBrowser.ScriptErrorsSuppressed = true;
43 | this.InfoBrowser.Size = new System.Drawing.Size(243, 106);
44 | this.InfoBrowser.TabIndex = 0;
45 | this.InfoBrowser.WebBrowserShortcutsEnabled = false;
46 | //
47 | // ShareInfoPanel
48 | //
49 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
50 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
51 | this.Controls.Add(this.InfoBrowser);
52 | this.Name = "ShareInfoPanel";
53 | this.Size = new System.Drawing.Size(243, 106);
54 | this.ResumeLayout(false);
55 |
56 | }
57 |
58 | #endregion
59 |
60 | private DeOps.Interface.Views.WebBrowserEx InfoBrowser;
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/UI/Services/Plan/Goals/ProgressText.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Drawing;
5 | using System.Data;
6 | using System.Text;
7 | using System.Windows.Forms;
8 |
9 | namespace DeOps.Services.Plan
10 | {
11 | public partial class ProgressText : UserControl
12 | {
13 | Font TahomaBold = new Font("Tahoma", 7);
14 | SolidBrush BlackBrush = new SolidBrush(Color.Black);
15 |
16 | SolidBrush Overlay = new SolidBrush(Color.FromArgb(128, Color.White));
17 |
18 | public int Level;
19 | public int Completed;
20 | public int Total;
21 |
22 | bool ShowCompletion;
23 |
24 | public ProgressText()
25 | {
26 | InitializeComponent();
27 |
28 | SetStyle(ControlStyles.UserPaint, true);
29 | SetStyle(ControlStyles.AllPaintingInWmPaint, true);
30 | }
31 |
32 | private void ProgressText_Paint(object sender, PaintEventArgs e)
33 | {
34 | int indent = Level * 8;
35 | int width = Width - indent;
36 |
37 | if (ProgressBarRenderer.IsSupported)
38 | {
39 | int div = (Total == 0) ? 1 : Total;
40 |
41 | Rectangle bar = new Rectangle(indent, 0, width, Height);
42 | Rectangle chunks = new Rectangle(indent, 0, width * Completed / div, Height);
43 |
44 | ProgressBarRenderer.DrawHorizontalBar(e.Graphics, bar);
45 | ProgressBarRenderer.DrawHorizontalChunks(e.Graphics, chunks);
46 |
47 | e.Graphics.FillRectangle(Overlay, ClientRectangle);
48 | }
49 |
50 | if (ShowCompletion)
51 | {
52 | string text = Completed.ToString() + " / " + Total.ToString() + " hours";
53 | SizeF size = e.Graphics.MeasureString(text, TahomaBold);
54 |
55 | e.Graphics.DrawString(text, TahomaBold, BlackBrush,
56 | indent + (width - size.Width) / 2,
57 | (Height - size.Height) / 2);
58 | }
59 | }
60 |
61 | private void ProgressText_MouseEnter(object sender, EventArgs e)
62 | {
63 | ShowCompletion = true;
64 | Invalidate();
65 | }
66 |
67 | private void ProgressText_MouseLeave(object sender, EventArgs e)
68 | {
69 | ShowCompletion = false;
70 | Invalidate();
71 | }
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/UI/Services/Plan/Schedule/DateSlider.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace DeOps.Services.Plan
2 | {
3 | partial class DateSlider
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Component Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.components = new System.ComponentModel.Container();
32 | this.ButtonTimer = new System.Windows.Forms.Timer(this.components);
33 | this.SuspendLayout();
34 | //
35 | // ButtonTimer
36 | //
37 | this.ButtonTimer.Interval = 25;
38 | this.ButtonTimer.Tick += new System.EventHandler(this.ButtonTimer_Tick);
39 | //
40 | // DateSlider
41 | //
42 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
43 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
44 | this.BackColor = System.Drawing.Color.WhiteSmoke;
45 | this.DoubleBuffered = true;
46 | this.Name = "DateSlider";
47 | this.Size = new System.Drawing.Size(396, 25);
48 | this.Paint += new System.Windows.Forms.PaintEventHandler(this.DateSlider_Paint);
49 | this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.DateSlider_MouseMove);
50 | this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DateSlider_MouseDown);
51 | this.Resize += new System.EventHandler(this.DateSlider_Resize);
52 | this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.DateSlider_MouseUp);
53 | this.ResumeLayout(false);
54 |
55 | }
56 |
57 | #endregion
58 |
59 | private System.Windows.Forms.Timer ButtonTimer;
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/UI/Services/IM/IMUI.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 |
6 | using DeOps.Interface;
7 | using DeOps.Implementation;
8 |
9 |
10 | namespace DeOps.Services.IM
11 | {
12 | public class IMUI : IServiceUI
13 | {
14 | CoreUI UI;
15 | IMService IM;
16 |
17 |
18 | public IMUI(CoreUI ui, OpService service)
19 | {
20 | UI = ui;
21 | IM = service as IMService;
22 |
23 | IM.CreateView += IM_CreateView;
24 | }
25 |
26 | public void GetMenuInfo(InterfaceMenuType menuType, List menus, ulong user, uint project)
27 | {
28 | if (menuType == InterfaceMenuType.Quick)
29 | {
30 | if (user == UI.Core.UserID)
31 | return;
32 |
33 | if (UI.Core.Locations.ActiveClientCount(user) == 0)
34 | return;
35 |
36 | menus.Add(new MenuItemInfo("Send IM", IMRes.Icon, new EventHandler(QuickMenu_View)));
37 | }
38 | }
39 |
40 | public void QuickMenu_View(object sender, EventArgs args)
41 | {
42 | IViewParams node = sender as IViewParams;
43 |
44 | if (node == null)
45 | return;
46 |
47 | ulong user = node.GetUser();
48 |
49 | OpenIMWindow(user);
50 | }
51 |
52 | public void OpenIMWindow(ulong user)
53 | {
54 | // if window already exists to node, show it
55 | var view = FindView(user);
56 |
57 | if (view != null && view.External != null)
58 | view.External.BringToFront();
59 |
60 | // else create new window
61 | else
62 | {
63 | IM_CreateView(user);
64 |
65 | IM.Connect(user);
66 | }
67 | }
68 |
69 | public IM_View FindView(ulong userID)
70 | {
71 | if (IM.MessageUpdate != null)
72 | foreach (Delegate func in IM.MessageUpdate.GetInvocationList())
73 | {
74 | var view = func.Target as IM_View;
75 | if (view != null && view.UserID == userID)
76 | return view;
77 | }
78 |
79 | return null;
80 | }
81 |
82 | public void IM_CreateView(ulong userID)
83 | {
84 | var view = new IM_View(UI, IM, userID);
85 |
86 | UI.ShowView(view, true);
87 | }
88 |
89 | public void GetNewsAction(ref System.Drawing.Icon symbol, ref EventHandler onClick)
90 | {
91 |
92 | }
93 | }
94 | }
95 |
--------------------------------------------------------------------------------
/UI/Interface/Views/ImageButton.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Drawing;
5 | using System.Text;
6 | using System.Windows.Forms;
7 |
8 |
9 | namespace DeOps.Interface.Views
10 | {
11 | enum ButtonState { Hot, Normal, Down }
12 |
13 |
14 | public class ImageButton : PictureBox
15 | {
16 | Image _ButtonHot;
17 | Image _ButtonNormal;
18 | Image _ButtonDown;
19 |
20 | [Category("Appearance")]
21 | public Image ButtonHot
22 | {
23 | get { return _ButtonHot; }
24 | set { _ButtonHot = value; }
25 | }
26 |
27 | [Category("Appearance")]
28 | public Image ButtonNormal
29 | {
30 | get { return _ButtonNormal; }
31 | set { _ButtonNormal = value; }
32 | }
33 |
34 | [Category("Appearance")]
35 | public Image ButtonDown
36 | {
37 | get { return _ButtonDown; }
38 | set { _ButtonDown = value; }
39 | }
40 |
41 | ButtonState State = ButtonState.Normal;
42 |
43 |
44 | public ImageButton()
45 | {
46 | MouseMove += new MouseEventHandler(ImageButton_MouseMove);
47 | MouseDown += new MouseEventHandler(ImageButton_MouseDown);
48 | MouseLeave += new EventHandler(ImageButton_MouseLeave);
49 | MouseUp += new MouseEventHandler(ImageButton_MouseUp);
50 | }
51 |
52 | private void ImageButton_MouseMove(object sender, MouseEventArgs e)
53 | {
54 | if (e.Button == MouseButtons.None)
55 | SetState(ButtonState.Hot);
56 | else
57 | SetState(ButtonState.Down);
58 | }
59 |
60 | private void ImageButton_MouseDown(object sender, MouseEventArgs e)
61 | {
62 | SetState(ButtonState.Down);
63 | }
64 |
65 | private void ImageButton_MouseLeave(object sender, EventArgs e)
66 | {
67 | SetState(ButtonState.Normal);
68 | }
69 |
70 | private void ImageButton_MouseUp(object sender, MouseEventArgs e)
71 | {
72 | SetState(ButtonState.Normal);
73 | }
74 |
75 | void SetState(ButtonState state)
76 | {
77 | if (State == state)
78 | return;
79 |
80 | State = state;
81 |
82 | if (State == ButtonState.Hot)
83 | Image = _ButtonHot;
84 |
85 | else if (State == ButtonState.Normal)
86 | Image = _ButtonNormal;
87 |
88 | else if (State == ButtonState.Down)
89 | Image = _ButtonDown;
90 | }
91 | }
92 |
93 |
94 | }
95 |
--------------------------------------------------------------------------------
/UI/Interface/Settings/CacheSetup.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Security.Cryptography;
7 | using System.Text;
8 | using System.Windows.Forms;
9 |
10 | using DeOps.Implementation;
11 |
12 | namespace DeOps.Interface.Settings
13 | {
14 | public partial class CacheSetup : CustomIconForm
15 | {
16 | OpCore Core;
17 | OpUser Profile;
18 |
19 | public WebCache Cache;
20 |
21 |
22 | public CacheSetup(OpCore core, WebCache cache)
23 | : base(core)
24 | {
25 | InitializeComponent();
26 |
27 | Core = core;
28 | Profile = Core.User;
29 |
30 | Cache = cache;
31 |
32 | AddressBox.Text = cache.Address;
33 | KeyBox.Text = (cache.AccessKey != null) ? Convert.ToBase64String(cache.AccessKey) : "";
34 | OpBox.Text = core.Network.OpID.ToString();
35 | }
36 |
37 | private void TestLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
38 | {
39 | try
40 | {
41 | WebCache test = new WebCache();
42 | test.Address = AddressBox.Text;
43 | test.AccessKey = Convert.FromBase64String(KeyBox.Text);
44 |
45 | string response = Core.Network.Cache.MakeWebCacheRequest(test, "ping:" + Core.Network.OpID.ToString());
46 |
47 | if (response.StartsWith("pong"))
48 | MessageBox.Show("Success");
49 | else
50 | MessageBox.Show(response);
51 | }
52 | catch (Exception ex)
53 | {
54 | MessageBox.Show(ex.Message);
55 | }
56 | }
57 |
58 | private void NewLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
59 | {
60 | RijndaelManaged crypt = new RijndaelManaged();
61 | crypt.GenerateKey();
62 | KeyBox.Text = Convert.ToBase64String(crypt.Key);
63 | }
64 |
65 | private void OKButton_Click(object sender, EventArgs e)
66 | {
67 | try
68 | {
69 | Cache.Address = AddressBox.Text;
70 | Cache.AccessKey = Convert.FromBase64String(KeyBox.Text);
71 |
72 | DialogResult = DialogResult.OK;
73 | Close();
74 | }
75 | catch (Exception ex)
76 | {
77 | MessageBox.Show(ex.Message);
78 | }
79 | }
80 |
81 | private void CloseButton_Click(object sender, EventArgs e)
82 | {
83 | Close();
84 | }
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/UI/Interface/Views/ExternalView.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Text;
7 | using System.Windows.Forms;
8 | using System.Diagnostics;
9 | using System.Threading;
10 |
11 | using DeOps.Implementation;
12 |
13 |
14 | namespace DeOps.Interface
15 | {
16 | public partial class ExternalView : CustomIconForm
17 | {
18 | Form Main;
19 | List MainViews;
20 | public ViewShell Shell;
21 |
22 |
23 | public ExternalView(Form main, List views, ViewShell shell)
24 | {
25 | InitializeComponent();
26 |
27 | Main = main;
28 | MainViews = views;
29 |
30 | Shell = shell;
31 | Shell.Dock = DockStyle.Fill;
32 | Shell.External = this;
33 |
34 | Controls.Add(Shell);
35 |
36 | Text = shell.GetTitle(false);
37 | Size = shell.GetDefaultSize();
38 |
39 | Icon icon = shell.GetIcon();
40 |
41 | if (icon != null)
42 | Icon = icon;
43 | }
44 |
45 | private void ExternalWin_Load(object sender, EventArgs e)
46 | {
47 |
48 | }
49 |
50 | public bool SafeClose()
51 | {
52 | if (!Shell.Fin())
53 | return false;
54 |
55 |
56 | Close();
57 | MainViews.Remove(this);
58 |
59 | return true;
60 | }
61 |
62 | private void ExternalView_FormClosing(object sender, FormClosingEventArgs e)
63 | {
64 | if (Shell.Fin())
65 | MainViews.Remove(this);
66 | else
67 | e.Cancel = true;
68 | }
69 | }
70 |
71 | public class HostsExternalViews : CustomIconForm
72 | {
73 | public List ExternalViews = new List();
74 |
75 | public HostsExternalViews() { }
76 |
77 | public HostsExternalViews(OpCore core)
78 | : base(core)
79 | { }
80 |
81 | public ExternalView FindViewType(Type x)
82 | {
83 | foreach (ExternalView view in ExternalViews)
84 | if (view.Shell.GetType() == x)
85 | return view;
86 |
87 | return null;
88 | }
89 |
90 | public bool ShowExistingView(Type x)
91 | {
92 | ExternalView view = FindViewType(x);
93 |
94 | if (view == null)
95 | return false;
96 |
97 | view.WindowState = FormWindowState.Normal;
98 | view.Activate();
99 |
100 | return true;
101 | }
102 | }
103 | }
--------------------------------------------------------------------------------
/UI/Interface/Settings/IgnoreForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 |
10 | using DeOps.Implementation;
11 | using DeOps.Services.Buddy;
12 |
13 | namespace DeOps.Interface.Settings
14 | {
15 | public partial class IgnoreForm : CustomIconForm
16 | {
17 | CoreUI UI;
18 | OpCore Core;
19 |
20 | List InList = new List();
21 |
22 |
23 | public IgnoreForm(CoreUI ui)
24 | {
25 | InitializeComponent();
26 |
27 | UI = ui;
28 | Core = ui.Core;
29 |
30 | Core.Buddies.IgnoreList.LockReading(() =>
31 | {
32 | foreach (OpBuddy ignore in Core.Buddies.IgnoreList.Values)
33 | {
34 | IgnoreList.Items.Add(new IgnoreItem(Core, ignore.ID));
35 | InList.Add(ignore.ID);
36 | }
37 | });
38 | }
39 |
40 | private void AddLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
41 | {
42 | AddUsersDialog add = new AddUsersDialog(UI, 0);
43 |
44 | if(add.ShowDialog() == DialogResult.OK)
45 | foreach(ulong person in add.People)
46 | if(person != Core.UserID && !InList.Contains(person))
47 | {
48 | IgnoreList.Items.Add(new IgnoreItem(Core, person));
49 | InList.Add(person);
50 | }
51 | }
52 |
53 | private void RemoveLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
54 | {
55 | foreach (IgnoreItem item in IgnoreList.SelectedItems.OfType().ToArray())
56 | {
57 | IgnoreList.Items.Remove(item);
58 | InList.Remove(item.ID);
59 | }
60 | }
61 |
62 | private void OkButton_Click(object sender, EventArgs e)
63 | {
64 | Core.Buddies.IgnoreList.SafeClear();
65 |
66 | foreach (IgnoreItem item in IgnoreList.Items)
67 | Core.Buddies.Ignore(item.ID, true);
68 |
69 | Close();
70 | }
71 |
72 | private void ExitButton_Click(object sender, EventArgs e)
73 | {
74 | Close();
75 | }
76 | }
77 |
78 | public class IgnoreItem
79 | {
80 | public string Name;
81 | public ulong ID;
82 |
83 | public IgnoreItem(OpCore core, ulong id)
84 | {
85 | Name = core.GetName(id);
86 | ID = id;
87 | }
88 |
89 | public override string ToString()
90 | {
91 | return Name;
92 | }
93 | }
94 | }
95 |
--------------------------------------------------------------------------------
/UI/Services/Trust/EditLink.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Text;
7 | using System.Windows.Forms;
8 |
9 | using DeOps.Implementation;
10 | using DeOps.Implementation.Dht;
11 | using DeOps.Implementation.Protocol.Net;
12 |
13 |
14 | namespace DeOps.Services.Trust
15 | {
16 | public partial class EditLink : DeOps.Interface.CustomIconForm
17 | {
18 | OpCore Core;
19 | TrustService Trust;
20 |
21 | uint ProjectID;
22 |
23 |
24 | public EditLink(OpCore core, uint id)
25 | : base(core)
26 | {
27 | InitializeComponent();
28 |
29 | Core = core;
30 | Trust = core.Trust;
31 |
32 | ProjectID = id;
33 |
34 | AwayCheckBox.Checked = Core.Locations.LocalAway;
35 | AwayMessage.Enabled = Core.Locations.LocalAway;
36 | AwayMessage.Text = Core.User.Settings.AwayMessage;
37 | }
38 |
39 | private void EditLink_Load(object sender, EventArgs e)
40 | {
41 | LocationBox.Text = Trust.Core.User.Settings.Location;
42 |
43 | OpLink link = Trust.GetLink(Core.UserID, ProjectID);
44 |
45 | //if (link != null)
46 | // TitleBox.Text = link.Title;
47 | }
48 |
49 | private void ButtonOK_Click(object sender, EventArgs e)
50 | {
51 | OpLink link = Trust.GetLink(Core.UserID, ProjectID);
52 |
53 | //if (link != null)
54 | // link.Title = TitleBox.Text;
55 |
56 | Trust.SaveLocal();
57 |
58 | Core.Locations.LocalAway = AwayCheckBox.Checked;
59 |
60 | if (LocationBox.Text != Core.User.Settings.Location || AwayMessage.Text != Core.User.Settings.AwayMessage)
61 | {
62 | Core.User.Settings.Location = LocationBox.Text;
63 | Core.User.Settings.AwayMessage = AwayMessage.Text;
64 |
65 | if (Core.User.Settings.AwayMessage.Length > 100)
66 | Core.User.Settings.AwayMessage = Core.User.Settings.AwayMessage.Substring(0, 100);
67 |
68 | Core.RunInCoreAsync(delegate()
69 | {
70 | Trust.Core.User.Save();
71 | });
72 | }
73 |
74 | if (Core.Network.Responsive)
75 | Core.Locations.UpdateLocation();
76 |
77 | Close();
78 | }
79 |
80 | private void ButtonCancel_Click(object sender, EventArgs e)
81 | {
82 | Close();
83 | }
84 |
85 | private void AwayCheckBox_CheckedChanged(object sender, EventArgs e)
86 | {
87 | AwayMessage.Enabled = AwayCheckBox.Checked;
88 | }
89 |
90 |
91 | }
92 | }
--------------------------------------------------------------------------------
/UI/Services/Profile/PreviewTemplate.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace DeOps.Services.Profile
2 | {
3 | partial class PreviewTemplate
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PreviewTemplate));
32 | this.Browser = new DeOps.Interface.Views.WebBrowserEx();
33 | this.SuspendLayout();
34 | //
35 | // Browser
36 | //
37 | this.Browser.AllowNavigation = false;
38 | this.Browser.AllowWebBrowserDrop = false;
39 | this.Browser.Dock = System.Windows.Forms.DockStyle.Fill;
40 | this.Browser.IsWebBrowserContextMenuEnabled = false;
41 | this.Browser.Location = new System.Drawing.Point(0, 0);
42 | this.Browser.MinimumSize = new System.Drawing.Size(20, 20);
43 | this.Browser.Name = "Browser";
44 | this.Browser.Size = new System.Drawing.Size(427, 466);
45 | this.Browser.TabIndex = 0;
46 | this.Browser.WebBrowserShortcutsEnabled = false;
47 | this.Browser.ScriptErrorsSuppressed = true;
48 | //
49 | // PreviewTemplate
50 | //
51 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
52 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
53 | this.ClientSize = new System.Drawing.Size(427, 466);
54 | this.Controls.Add(this.Browser);
55 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
56 | this.Name = "PreviewTemplate";
57 | this.Text = "Preview Template";
58 | this.Load += new System.EventHandler(this.PreviewTemplate_Load);
59 | this.ResumeLayout(false);
60 |
61 | }
62 |
63 | #endregion
64 |
65 | private DeOps.Interface.Views.WebBrowserEx Browser;
66 | }
67 | }
--------------------------------------------------------------------------------
/UI/Update/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:2.0.50727.1433
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace UpdateOp.Properties
12 | {
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources
26 | {
27 |
28 | private static global::System.Resources.ResourceManager resourceMan;
29 |
30 | private static global::System.Globalization.CultureInfo resourceCulture;
31 |
32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
33 | internal Resources()
34 | {
35 | }
36 |
37 | ///
38 | /// Returns the cached ResourceManager instance used by this class.
39 | ///
40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
41 | internal static global::System.Resources.ResourceManager ResourceManager
42 | {
43 | get
44 | {
45 | if ((resourceMan == null))
46 | {
47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("UpdateOp.Properties.Resources", typeof(Resources).Assembly);
48 | resourceMan = temp;
49 | }
50 | return resourceMan;
51 | }
52 | }
53 |
54 | ///
55 | /// Overrides the current thread's CurrentUICulture property for all
56 | /// resource lookups using this strongly typed resource class.
57 | ///
58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
59 | internal static global::System.Globalization.CultureInfo Culture
60 | {
61 | get
62 | {
63 | return resourceCulture;
64 | }
65 | set
66 | {
67 | resourceCulture = value;
68 | }
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/UI/Services/Location/Location.txt:
--------------------------------------------------------------------------------
1 |
2 | old location scheme
3 | every 3 mins node publishes loc info on network
4 | peers keep their buddy lists alive by searching the network before location data expires
5 | goal was to prevent someone with 1,000,000 buddies from being flooded off the network - their loc was replicated
6 | resulted in too much continual researching
7 |
8 |
9 | new scheme
10 |
11 |
12 | timer
13 | ping those interested in when timeout reached
14 | timeout expired interested
15 | update localInterested
16 | if loc not local or remote interested - remove
17 |
18 | send ping
19 | latest remote loc version
20 |
21 | receive ping
22 | put node on interested list
23 | calc timeout
24 | send notification
25 |
26 |
27 | send notify
28 | with loc info if required, and timeout
29 | signed location with UTC time embedded and version #
30 |
31 | receive notification
32 | update node as being on/offline
33 |
34 | on address change
35 | send notification to those interested
36 | ping naturally sent will auto-include new loc info
37 | re-publish new version of location info
38 |
39 | going offline
40 | send notifactions to all those interested
41 |
42 | remote offline
43 | recive notify dead
44 | or, send ping and no notify reply - do a search
45 | ** if network not established, pause adding/removing
46 |
47 | loc list
48 | bool remoteInterested - we sent notifications to
49 | bool localInterested - we send pings to
50 |
51 | int lastLocalVersionSent - send pings with loc info if out of date (not signed)
52 |
53 | replicate
54 | auto replicate to new closer nodes. or not, save bandwidth, wait till situated on network
55 |
56 | notes
57 | tags, local services updated another reason to run notification
58 | search mechanism stays, but used as last resort
59 |
60 | remote interested is dict if nodes in remote interested, notifications sent through lightcomm
61 | on recv end, ping timeouts reset
62 |
63 | local interest
64 | loc service provides hook, asks services who are we interested in
65 | trust component returns local region, 2 up, 2 down, revise l8r
66 | chat returns those in rooms
67 | buddies component returns buddies
68 |
69 | when person in tree list view is clicked (main interface only) check online is called
70 | sets local interest, but probably removed on next pass that queries components
71 |
72 | those who have lost interest are not pinged, kept in cache but oldest pushed off after 64
73 |
74 | trust view - click
75 | asks location service FindOnline(userID), set interest is temporary
76 | if loc is good return true
77 | if loc out of date, pinged
78 | if unknown searched
79 | once found it is pinged, not pinged after that, only if transfer view renews interest (manually)
80 |
81 | services should tell loc who they're interested in
82 | when pruning needs to happen, loc asks them for updated list
83 |
84 | inteface
85 | in person info, show online/offline/searching - research option
86 | with green/red led graphic
87 |
88 |
89 |
--------------------------------------------------------------------------------